Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
29 мар 2024, 11:54

Автоматическое заполнение ТабличнойЧасти Документа

Автор 064madman, 06 июн 2012, 11:07

0 Пользователей и 1 гость просматривают эту тему.

064madman

Уважаемые специалисты!
Нужна подсказка по организации автоматического заполнения документа: Создаю конфигурацию для маленькой кафешки где в первую и основную очередь необходимо облегчить работу бармена по составлению СчетаКлиента. Этот документ должен формироваться на базе Справочников Блюда и Ингридиенты а так же РегистраСедений СоставлениеБлюд.
Я умом понимаю что необходима какая то обработка в закладке ПриИзменении, но как должна выглядеть процедура я не догадаться ни прочитать в книге или интернете не могу. Подскажите пожалуйста :)

cska-fanat-kz

все таки почитайте что-нибудь про подбор...
сама концепция подбора - это как раз ваш случай...
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

064madman

Спасибо за совет :) Может порекомендуете ссылку,а то у Радченко ни строчки об этом.
Заранее спасибо.

cska-fanat-kz

http://help1c.com/faq8/view/680.html

Как сделать подбор элементов справочника в табличную часть документа?

Нужно на форме документа сделать кнопочку Подбор для справочника сотрудники и чтобы выбранные элементы добавлялись в табличное поле документа?

В данной статье я приведу пример подбора элемента справочника в Список значений и в Табличную часть!

Логика такова:
При нажатии на кнопку ПОДБОР (Процедура КоманднаяПанельПодбор) должена открыться форма подбора сотрудников:
Для Списка значений (СЗ) - ОткрытьФормуВыбораСотрудника(ЭлементыФормы.СписокСотрудников, ЭтотОбъект, Ложь, );
Для Табличного поля (ТП) - ОткрытьФормуВыбораСотрудника(ЭлементыФормы.ТабличноеПолеРаботники, ЭтотОбъект, Ложь, );

Далее открывается форма подбора сотрудника, при двойном щелчке - сотрудник должен добавится в СЗ или ТП.
Для этого у СЗ и ТП в Свойства - События добавляем ОбработкуВыбора :
Для Списка значений (СЗ) - Процедура СписокСотрудниковОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
Для Табличного поля (ТП) - Процедура ТабличноеПолеРаботникиОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
А в них пропишем проверку, добавлен сотрудник или нет - чтобы не было задвоений!

Код 1C v 8.х //Процедура кнопки очистить список значений
Процедура КоманднаяПанельОчистить(Кнопка)
СписокСотрудников.Очистить();
КонецПроцедуры

// Процедура открывает форму выбора сотрудников организации
// Параметры:
// Владелец - владелец формы
// Ключ - ключ, ссылка на объект из которого открывается форма
// ЗакрыватьПриВыборе - Булево, закрывать ли нет
// ГоловнаяОрганизация - головная организация
//
Процедура ОткрытьФормуВыбораСотрудника(Владелец, Ключ, ЗакрыватьПриВыборе, ГоловнаяОрганизация = Неопределено) Экспорт

СтандартнаяОбработка = Ложь;

Форма = Справочники.СотрудникиОрганизаций.ПолучитьФормуВыбора(, Владелец, Ключ);
Форма.ЗакрыватьПриВыборе = ЗакрыватьПриВыборе;

//установим отборы по организации и виду договора
Если ЗначениеЗаполнено(ГоловнаяОрганизация) Тогда
Форма.Отбор.Организация.Установить(ГоловнаяОрганизация);
Форма.Отбор.Организация.Использование = ЗначениеЗаполнено(ГоловнаяОрганизация);
КонецЕсли;

СписокДоговоров = Новый СписокЗначений;
СписокДоговоров.Добавить(Перечисления.ВидыДоговоровСФизЛицами.ТрудовойДоговор);
СписокДоговоров.Добавить(Перечисления.ВидыДоговоровСФизЛицами.Подряда);
СписокДоговоров.Добавить(Перечисления.ВидыДоговоровСФизЛицами.Авторский);
Форма.Отбор.ВидДоговора.ВидСравнения = ВидСравнения.ВСписке;
Форма.Отбор.ВидДоговора.Использование = Истина;
Форма.Отбор.ВидДоговора.Значение = СписокДоговоров;
//Открываем форму выбора
Форма.Заголовок = "Выберите работников:";
Форма.Открыть();

КонецПроцедуры

//Процедура кнопки подбор
Процедура КоманднаяПанельПодбор(Кнопка)
// Процедура для подбора в табличное поля
ОткрытьФормуВыбораСотрудника(ЭлементыФормы.ТабличноеПолеРаботники, ЭтотОбъект, Ложь, );

// Процедура для подбора в список значений
ОткрытьФормуВыбораСотрудника(ЭлементыФормы.СписокСотрудников, ЭтотОбъект, Ложь, );
КонецПроцедуры

//Обработка Выбора значения для списка значений
Процедура СписокСотрудниковОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
Если ТипЗнч(ВыбранноеЗначение) = Тип("СправочникСсылка.СотрудникиОрганизаций") Тогда
//Для того чтобы не было задвоений при выборе, наложим условие
Если СписокСотрудников.НайтиПоЗначению(ВыбранноеЗначение) = Неопределено Тогда
НоваяСтрока = СписокСотрудников.Добавить();
НоваяСтрока.Значение = ВыбранноеЗначение;
КонецЕсли;
КонецЕсли;

КонецПроцедуры

//Обработка Выбора значения для табличного поля
Процедура ТабличноеПолеРаботникиОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;

Если ТипЗнч(ВыбранноеЗначение) = Тип("СправочникСсылка.СотрудникиОрганизаций") Тогда
//Для того чтобы не было задвоений при выборе, наложим условие
Если ТабличноеПолеРаботники.НайтиСтроки(Новый Структура("Работник", ВыбранноеЗначение)).Количество() = 0 Тогда
НоваяСтрока = ТабличноеПолеРаботники.Добавить();
НоваяСтрока.Работник = ВыбранноеЗначение;
// далее можно описать заполнение других колонок табличного поля
КонецЕсли;
КонецЕсли;
КонецПроцедуры

Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

064madman

Цитата: cska-fanat-kz от 06 июн 2012, 15:01
http://help1c.com/faq8/view/680.html
а я правильно понял что это Кнопка "подбор", но она не автоматизирует процесс. Мне же нужно чтобы табличная часть заполнялась без участия человека. А только лишь при выборе элемента Реквизит.Документа.

cska-fanat-kz

Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

064madman

Цитата: cska-fanat-kz от 07 июн 2012, 06:57
а ну-ка напишите ваше видение задачи.....
Есть справочник Блюда есть справочник Ингридиенты есть документ СоставлениеБлюд и есть регистрсведений Рецепты
в регистр записывается документ СоставлениеБлюд мне нужно чтобы в документе СчетКлиента при выборе блюда автоматически заполнялась табличная часть из регистра

djvjv

единственное что  могу предложить это когда будете выбирать блюда автоматически делать движения в регистре в процедуре БлюдаПриИзменении

064madman

Цитата: djvjv от 08 июн 2012, 00:55
единственное что  могу предложить это когда будете выбирать блюда автоматически делать движения в регистре в процедуре БлюдаПриИзменении
Я именно так и делаю, но что необходимо написать в процедуре...

СветланаCC

в документе Счет клиента - при выборе блюда пишите обработку выбора, а в ней прописываете запрос из регистра сведений по данному блюду - и результат запроса размещаете в табличную часть
Тазовод)

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск