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

как заполнить колонки в форме?

Автор serq82, 02 авг 2011, 07:09

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

serq82

1с 8.1 УТ создал документ Задание на производство,в заказе покупателя добавил кнопку для формирования задания на производство,документы создаются для каждого станка отдельно....
вот код:
Процедура СформироватьЗаданиеНаПроизводствоНажатие(Элемент)
    Если Не Проведен Тогда
      Предупреждение("Сформировать можно только после его проведения!");
      Возврат;
   КонецЕсли;

   МассивВидовПрофилей = Новый Массив;
      
   Для Каждого СтрокаТЧ Из Товары Цикл   
      НайденныйВидПрофиля = МассивВидовПрофилей.Найти(СтрокаТЧ.Номенклатура.ВидПрофиля);
      Если НайденныйВидПрофиля = Неопределено Тогда
         МассивВидовПрофилей.Добавить(СтрокаТЧ.Номенклатура.ВидПрофиля);
      КонецЕсли;
   КонецЦикла;
   //н=0;
   Для Каждого ЭлементМассива Из МассивВидовПрофилей Цикл
      //добавляет в колонку Задание на производство сформированного документа
      СоздатьДокументЗаданиеНаПроизводство(ЭлементМассива);
   //   Товары[Н].ЗаданиеНаПроизводство =  Документы.ЗаданиеНаПроизводство.НайтиПоРеквизиту("ДокументОснование",ЗаданиеНаПроизводство.ДокументОснование);
    // н=н+1;
       
КонецЦикла;
   
КонецПроцедуры
Процедура СоздатьДокументЗаданиеНаПроизводство(ЭлементМассива)
   ЗаданиеНаПроизводство = Документы.ЗаданиеНаПроизводство.СоздатьДокумент();
   ЗаданиеНаПроизводство.Дата          = ТекущаяДата();
   ЗаданиеНаПроизводство.ДокументОснование = Ссылка;
   ЗаданиеНаПроизводство.ДатаОтгрузки       = ДатаОтгрузки;
   ЗаданиеНаПроизводство.Контрагент       = Контрагент;
   //ЗаданиеНаПроизводство.Организация    = Организация;
   ЗаданиеНаПроизводство.Подразделение    = Подразделение;
   ЗаданиеНаПроизводство.Комментарий       = Комментарий;
   ЗаказПокупателя = Документы.ЗаказПокупателя;
   
   Для Каждого СтрокаТЧ Из Товары Цикл
      
      Если СтрокаТЧ.Номенклатура.ВидПрофиля <> ЭлементМассива Тогда
         Продолжить;
      КонецЕсли;
        СтрокиТабл = ЗаданиеНаПроизводство.Товары.Добавить();
      СтрокиТабл.Номенклатура = СтрокаТЧ.Номенклатура;
      СтрокиТабл.Длина = СтрокаТЧ.Длина;
      СтрокиТабл.Ширина = СтрокаТЧ.Ширина;
      СтрокиТабл.КоличествоЛистов = СтрокаТЧ.КоличествоЛистов;
      СтрокиТабл.Количество = СтрокаТЧ.Количество;
      
   КонецЦикла;
в заказе покупателя ТЧ форме добавил задание производство,как сделать чтобы для каждого ВидаПрофиля показывало свой документ задание на производство и как сделать проверку что документ задание на производство если не проведен очищал таблицу и создавал новый и если проведен то запрет формирование нового???

serq82

1с 8.1 УТ создал документ Задание на производство,в заказе покупателя добавил кнопку для формирования задания на производство,документы создаются для каждого станка отдельно....
вот код:
Процедура СформироватьЗаданиеНаПроизводствоНажатие(Элемент)
Если Не Проведен Тогда
Предупреждение("Сформировать можно только после его проведения!");
Возврат;
КонецЕсли;

МассивВидовПрофилей = Новый Массив;

Для Каждого СтрокаТЧ Из Товары Цикл
НайденныйВидПрофиля = МассивВидовПрофилей.Найти(СтрокаТЧ.Номенклатура.ВидПрофиля);
Если НайденныйВидПрофиля = Неопределено Тогда
МассивВидовПрофилей.Добавить(СтрокаТЧ.Номенклатура.ВидПрофиля);
КонецЕсли;
КонецЦикла;
//н=0;
Для Каждого ЭлементМассива Из МассивВидовПрофилей Цикл
//добавляет в колонку Задание на производство сформированного документа
СоздатьДокументЗаданиеНаПроизводство(ЭлементМассива);
// Товары[Н].ЗаданиеНаПроизводство = Документы.ЗаданиеНаПроизводство.НайтиПоРеквизиту("ДокументОснование",ЗаданиеНаПроизводство.ДокументОснование);
// н=н+1;

КонецЦикла;

КонецПроцедуры
Процедура СоздатьДокументЗаданиеНаПроизводство(ЭлементМассива)
ЗаданиеНаПроизводство = Документы.ЗаданиеНаПроизводство.СоздатьДокумент();
ЗаданиеНаПроизводство.Дата = ТекущаяДата();
ЗаданиеНаПроизводство.ДокументОснование = Ссылка;
ЗаданиеНаПроизводство.ДатаОтгрузки = ДатаОтгрузки;
ЗаданиеНаПроизводство.Контрагент = Контрагент;
//ЗаданиеНаПроизводство.Организация = Организация;
ЗаданиеНаПроизводство.Подразделение = Подразделение;
ЗаданиеНаПроизводство.Комментарий = Комментарий;
ЗаказПокупателя = Документы.ЗаказПокупателя;

Для Каждого СтрокаТЧ Из Товары Цикл

Если СтрокаТЧ.Номенклатура.ВидПрофиля <> ЭлементМассива Тогда
Продолжить;
КонецЕсли;
СтрокиТабл = ЗаданиеНаПроизводство.Товары.Добавить();
СтрокиТабл.Номенклатура = СтрокаТЧ.Номенклатура;
СтрокиТабл.Длина = СтрокаТЧ.Длина;
СтрокиТабл.Ширина = СтрокаТЧ.Ширина;
СтрокиТабл.КоличествоЛистов = СтрокаТЧ.КоличествоЛистов;
СтрокиТабл.Количество = СтрокаТЧ.Количество;

КонецЦикла;
в заказе покупателя ТЧ форме добавил задание производство,как сделать чтобы для каждого ВидаПрофиля показывало свой документ задане на проиизводство и как сделать проверку что документ задание на производство если не проведен очищал таблицу и создавал новый и если проведен то запрет формирование нового???

sergejK74

Код вставляй между тегами [code][/code]. Для этого даже кнопочка специальная есть.
Кнопочка Спасибо - слева!

serq82

1с 8.1 УТ создал документ Задание на производство,в заказе покупателя добавил кнопку для формирования задания на производство,документы создаются для каждого станка отдельно....
вот код:
Процедура СформироватьЗаданиеНаПроизводствоНажатие(Элемент)
Если Не Проведен Тогда
Предупреждение("Сформировать можно только после его проведения!");
Возврат;
КонецЕсли;

МассивВидовПрофилей = Новый Массив;

Для Каждого СтрокаТЧ Из Товары Цикл
НайденныйВидПрофиля = МассивВидовПрофилей.Найти(СтрокаТЧ.Номенклатура.ВидПрофиля);
Если НайденныйВидПрофиля = Неопределено Тогда
МассивВидовПрофилей.Добавить(СтрокаТЧ.Номенклатура.ВидПрофиля);
КонецЕсли;
КонецЦикла;
//н=0;
Для Каждого ЭлементМассива Из МассивВидовПрофилей Цикл
//добавляет в колонку Задание на производство сформированного документа
СоздатьДокументЗаданиеНаПроизводство(ЭлементМассива);
// Товары[Н].ЗаданиеНаПроизводство = Документы.ЗаданиеНаПроизводство.НайтиПоРеквизиту("ДокументОснование",ЗаданиеНаПроизводство.ДокументОснование);
// н=н+1;

КонецЦикла;

КонецПроцедуры
Процедура СоздатьДокументЗаданиеНаПроизводство(ЭлементМассива)
ЗаданиеНаПроизводство = Документы.ЗаданиеНаПроизводство.СоздатьДокумент();
ЗаданиеНаПроизводство.Дата = ТекущаяДата();
ЗаданиеНаПроизводство.ДокументОснование = Ссылка;
ЗаданиеНаПроизводство.ДатаОтгрузки = ДатаОтгрузки;
ЗаданиеНаПроизводство.Контрагент = Контрагент;
//ЗаданиеНаПроизводство.Организация = Организация;
ЗаданиеНаПроизводство.Подразделение = Подразделение;
ЗаданиеНаПроизводство.Комментарий = Комментарий;
ЗаказПокупателя = Документы.ЗаказПокупателя;

Для Каждого СтрокаТЧ Из Товары Цикл

Если СтрокаТЧ.Номенклатура.ВидПрофиля <> ЭлементМассива Тогда
Продолжить;
КонецЕсли;
СтрокиТабл = ЗаданиеНаПроизводство.Товары.Добавить();
СтрокиТабл.Номенклатура = СтрокаТЧ.Номенклатура;
СтрокиТабл.Длина = СтрокаТЧ.Длина;
СтрокиТабл.Ширина = СтрокаТЧ.Ширина;
СтрокиТабл.КоличествоЛистов = СтрокаТЧ.КоличествоЛистов;
СтрокиТабл.Количество = СтрокаТЧ.Количество;

КонецЦикла;

в заказе покупателя ТЧ форме добавил задание производство,как сделать чтобы для каждого ВидаПрофиля показывало свой документ задане на проиизводство и как сделать проверку что документ задание на производство если не проведен очищал таблицу и создавал новый и если проведен то запрет формирование нового???

serq82


Шурыгин Иван Сергеевич

для того чтобы показывал форму каждого документа, необходимо в цикле открывать формы новых документов.
относительно второго я бы сделал примерно так:

Процедура СоздатьДокументЗаданиеНаПроизводство(ЭлементМассива)
ТекстЗапроса = "Выбрать Ссылка
Из Документы.ЗаданиеНаПроизводство
Где ВидПрофиля = &ВидПрофиля
И ДокументОснование = &ДокументОснование";
Запрос = Новый Запрос(ТекстЗапроса);
Запрос.УстановитьПараметр("ВидПрофиля",ЭлементМассива);
Запрос.УстановитьПараметр("ДокументОснование",Ссылка);

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

Для Каждого СтрокаТЧ Из Товары Цикл

Если СтрокаТЧ.Номенклатура.ВидПрофиля <> ЭлементМассива Тогда
Продолжить;
КонецЕсли;
СтрокиТабл = ЗаданиеНаПроизводство.Товары.Добавить();
СтрокиТабл.Номенклатура = СтрокаТЧ.Номенклатура;
СтрокиТабл.Длина = СтрокаТЧ.Длина;
СтрокиТабл.Ширина = СтрокаТЧ.Ширина;
СтрокиТабл.КоличествоЛистов = СтрокаТЧ.КоличествоЛистов;
СтрокиТабл.Количество = СтрокаТЧ.Количество;

КонецЦикла;


единственное поправьте синтаксические ошибки...
===================================
жизнь надо прожить так, чтоб вверху посмотрели.
и сказали "А ну ка повтори"
===================================

Шурыгин Иван Сергеевич

забыл... в конце добавьте

Фрм = ЗаданиеНаПроизводство.ПолучитьФорму();
Фрм.Открыть();
===================================
жизнь надо прожить так, чтоб вверху посмотрели.
и сказали "А ну ка повтори"
===================================

Теги:

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

Рейтинг@Mail.ru

Поиск