1. user1169791 10.09.19 09:24 Сейчас в теме

Люди помогите с процедурой пожалуйста!нужно исправить!СРОЧНО!!!

Всем доброго дня ребят, есть вопрос по поводу автоматического заполнения таблицы документа из другой таблицы!
Вот есть документ в нем две таблицы,есть кнопка для того что бы происходило заполнение из одной таблицы в другую!
ЧТо нужно!
нужно,что бы эта кнопка работала только для тех строк где есть определенное название подразделения!
я пробывал дописать Если но что то не получилось
Процедура ..........................()
Если ПродукцияБрака.Итог("Подразделение") = "1.УчастокТП"  ИЛИ "4.УчастокСборки"  Тогда
........
.........
..........
.............
...........
..........
КонецЕсли;
КонецПроцедуры
Показать


Сама процедура вот такая,какая он сейчас
Процедура ЗаполнитьМатериалыБракаНажатие(Элемент)
		Для каждого Стр из ПродукцияБрака Цикл
		НоваяСтрока = МатериалыБрака.Добавить();
		НоваяСтрока.Количество = Стр.Количество;
		НоваяСтрока.Номенклатура = Стр.Номенклатура;
		НоваяСтрока.Заказ = Стр.Заказ;
		НоваяСтрока.ЕдиницаИзмерения =Стр.ЕдиницаИзмерения;
		НоваяСтрока.Коэффициент = Стр.Коэффициент;
		НоваяСтрока.Подразделение = Стр.Подразделение;
	КонецЦикла;
	Ответ = Вопрос("Проверьте правильность заполнения номенклатуры!!!"
	+ Символы.ПС + "Продолжить?" + Символы.ПС,
	РежимДиалогаВопрос.ДаНет);
	Если Не Ответ = КодВозвратаДиалога.Да Тогда
		Возврат;
	КонецЕсли;
	Этаформа.ТекущийЭлемент = ЭлементыФормы.МатериалыБрака;
КонецПроцедуры
Показать


Подскажите пожалуйста,как правильно дописать Процедуру!!
Конфа:Управление производственным предприятием, редакция 1.3 (1.3.111.1)
Найденные решения
3. omut 10.09.19 09:28 Сейчас в теме
Это всё ужасно. Но уж если так хочется, то должно быть что-то вроде этого:

Процедура ЗаполнитьМатериалыБракаНажатие(Элемент)
        Для каждого Стр из ПродукцияБрака Цикл
                Если Стр.Подразделение.Наименование = "1.УчастокТП"  ИЛИ Стр.Подразделение.Наименование = "4.УчастокСборки"  Тогда
...
               КонецЕсли;
        КонецЦикла;
КонецПроцедуры
user1169791; Pavel Rodinchenko; +2 Ответить
4. Liogon 10.09.19 09:40 Сейчас в теме
Лучше смотреть не по наименованию, а по коду, подразделения. Идеальный вариант завести регистр сведений на этот случай
Для примера можно попробовать такой вариант.
Процедура ЗаполнитьМатериалыБракаНажатие(Элемент)
       Для каждого Стр из ПродукцияБрака Цикл
Если Стр.Подразделение.наименование = "1.УчастокТП"   ИЛИ Стр.Подразделение.наименование ="4.УчастокСборки"Тогда
Продолжить;
КонецЕсли
        НоваяСтрока = МатериалыБрака.Добавить();
        НоваяСтрока.Количество = Стр.Количество;
        НоваяСтрока.Номенклатура = Стр.Номенклатура;
        НоваяСтрока.Заказ = Стр.Заказ;
        НоваяСтрока.ЕдиницаИзмерения =Стр.ЕдиницаИзмерения;
        НоваяСтрока.Коэффициент = Стр.Коэффициент;
        НоваяСтрока.Подразделение = Стр.Подразделение;
    КонецЦикла;
    Ответ = Вопрос("Проверьте правильность заполнения номенклатуры!!!"
    + Символы.ПС + "Продолжить?" + Символы.ПС,
    РежимДиалогаВопрос.ДаНет);
    Если Не Ответ = КодВозвратаДиалога.Да Тогда
        Возврат;
    КонецЕсли;
    Этаформа.ТекущийЭлемент = ЭлементыФормы.МатериалыБрака;
КонецПроцедуры
Показать
user1169791; +1 Ответить
Остальные ответы
Избранное Подписка Сортировка: Древо
2. RustamZz 10.09.19 09:27 Сейчас в теме
ПродукцияБрака.НайтиСтроки(
3. omut 10.09.19 09:28 Сейчас в теме
Это всё ужасно. Но уж если так хочется, то должно быть что-то вроде этого:

Процедура ЗаполнитьМатериалыБракаНажатие(Элемент)
        Для каждого Стр из ПродукцияБрака Цикл
                Если Стр.Подразделение.Наименование = "1.УчастокТП"  ИЛИ Стр.Подразделение.Наименование = "4.УчастокСборки"  Тогда
...
               КонецЕсли;
        КонецЦикла;
КонецПроцедуры
user1169791; Pavel Rodinchenko; +2 Ответить
6. user1169791 10.09.19 10:33 Сейчас в теме
(3) у меня вот такая процедура получилась добавил Иначе если!
результат не тот что нужен..
он выдает сначала все спецификации,по всем подразделениям
а после те строки что описаны выше в цикле,но понужным подразделениям!что то тут я не то написал..помогите пожалуйста..надо что бы при нажатии на кнопку, по таким подразделениям он выдавал то что выше,а по другим подразделениям он раскрывал специфакации!
Процедура ЗаполнитьМатериалыБракаНажатие(Элемент)
	Ответ = Вопрос("Проверьте правильность заполнения номенклатуры!!!"
	+ Символы.ПС + "Продолжить?" + Символы.ПС,
	РежимДиалогаВопрос.ДаНет);
	Если Не Ответ = КодВозвратаДиалога.Да Тогда
		Возврат;
	КонецЕсли;
	Для каждого Стр из ПродукцияБрака Цикл
		Если Стр.Подразделение.Наименование = "2.Участок ТЦ"  ИЛИ Стр.Подразделение.Наименование = "3.Участок 1 исп." ИЛИ Стр.Подразделение.Наименование = "5.Участок ПСИ"  ИЛИ Стр.Подразделение.Наименование = "6.Участок ок.сб."  ИЛИ Стр.Подразделение.Наименование = "7.Участок Вых.контр."  Тогда
		    НоваяСтрока = МатериалыБрака.Добавить();
			НоваяСтрока.Количество = Стр.Количество;
			НоваяСтрока.Номенклатура = Стр.Номенклатура;
			НоваяСтрока.Заказ = Стр.Заказ;
			НоваяСтрока.ЕдиницаИзмерения =Стр.ЕдиницаИзмерения;
			НоваяСтрока.Коэффициент = Стр.Коэффициент;
			НоваяСтрока.Подразделение = Стр.Подразделение;
		ИначеЕсли Стр.Подразделение.Наименование = "1.Участок ТП"  ИЛИ Стр.Подразделение.Наименование = "4.Участок сборки" тогда  
			 ЗаполнитьМатериалыБракаПоСпецификации(МатериалыБрака, "МатериалыБрака");

		КонецЕсли;
	КонецЦикла;
	Этаформа.ТекущийЭлемент = ЭлементыФормы.МатериалыБрака;
КонецПроцедуры
Показать
7. Liogon 10.09.19 21:20 Сейчас в теме
Конфигурации под рукой нет, но подозреваю, что процедура "ЗаполнитьМатериалыБракаПоСпецификации" для всей табличной части раскрывает спецификации. Если так, то она делает это столько раз, сколько выполняется ветвь иначеесли.

Если я прав, то в этой процедуре должен быть цикл по строкам ТЧ. В этом случае в ветвь иначе если надо перенести логику из цикла.
4. Liogon 10.09.19 09:40 Сейчас в теме
Лучше смотреть не по наименованию, а по коду, подразделения. Идеальный вариант завести регистр сведений на этот случай
Для примера можно попробовать такой вариант.
Процедура ЗаполнитьМатериалыБракаНажатие(Элемент)
       Для каждого Стр из ПродукцияБрака Цикл
Если Стр.Подразделение.наименование = "1.УчастокТП"   ИЛИ Стр.Подразделение.наименование ="4.УчастокСборки"Тогда
Продолжить;
КонецЕсли
        НоваяСтрока = МатериалыБрака.Добавить();
        НоваяСтрока.Количество = Стр.Количество;
        НоваяСтрока.Номенклатура = Стр.Номенклатура;
        НоваяСтрока.Заказ = Стр.Заказ;
        НоваяСтрока.ЕдиницаИзмерения =Стр.ЕдиницаИзмерения;
        НоваяСтрока.Коэффициент = Стр.Коэффициент;
        НоваяСтрока.Подразделение = Стр.Подразделение;
    КонецЦикла;
    Ответ = Вопрос("Проверьте правильность заполнения номенклатуры!!!"
    + Символы.ПС + "Продолжить?" + Символы.ПС,
    РежимДиалогаВопрос.ДаНет);
    Если Не Ответ = КодВозвратаДиалога.Да Тогда
        Возврат;
    КонецЕсли;
    Этаформа.ТекущийЭлемент = ЭлементыФормы.МатериалыБрака;
КонецПроцедуры
Показать
user1169791; +1 Ответить
5. user1169791 10.09.19 09:42 Сейчас в теме
Оставьте свое сообщение
Новые вопросы с вознаграждением
Автор темы объявил вознаграждение за найденный ответ, его получит тот, кто первый поможет автору.

Вакансии

Программист 1С
Санкт-Петербург
зарплата от 130 000 руб.
Полный день


Программисты 1С УТ / БУЗ/ЗУП / БИТ ФИНАНС
Москва
зарплата от 100 000 руб. до 180 000 руб.
Полный день

Программист 1С
Москва
зарплата от 150 000 руб. до 150 000 руб.
Полный день

Программист, аналитик, эксперт 1С
Санкт-Петербург
По совместительству