1. user1008893 07.11.18 11:42 Сейчас в теме

Вывод параметров на макет

Делаю обработку по выгрузке в excel.
Все хорошо,но _ШК не могу получить. Подскажите кто нибудь пожалуйста...
Процедура ВыгрузитьШаблон(ВхСтрокаКонтрагент)
	
Запрос = Новый Запрос;
	Запрос.Текст = 
		"ВЫБРАТЬ
		|	ВариантыИсполнения.Владелец КАК Номенклатура,
		|	ВариантыИсполнения.Ссылка КАК ВИ
		|ИЗ
		|	Справочник.ВариантыИсполнения КАК ВариантыИсполнения
		|ГДЕ
		|	ВариантыИсполнения.ПометкаУдаления = ЛОЖЬ
		|	И ВариантыИсполнения.Владелец.ПометкаУдаления = ЛОЖЬ
		|	И ВариантыИсполнения.Владелец В ИЕРАРХИИ(&Номенклатура)
		|	И ВариантыИсполнения.Активность
		|	И ВариантыИсполнения.Владелец.Активность
		|	И ВариантыИсполнения.ТипВИ = ЗНАЧЕНИЕ(Перечисление.ТипыВариантовИсполнения.Стандартный)
		|
		|СГРУППИРОВАТЬ ПО
		|	ВариантыИсполнения.Владелец,
		|	ВариантыИсполнения.Ссылка
		|ИТОГИ ПО
		|	Номенклатура ИЕРАРХИЯ
		|АВТОУПОРЯДОЧИВАНИЕ";
  		 Запрос.УстановитьПараметр("Номенклатура", НоменклатураИерархия.ВыгрузитьЗначения());	
		
	   ВыборкаДетали = Запрос.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);    
    
    ТабДок = Новый ТабличныйДокумент;
        
    Макет = ПолучитьМакет("Макет");
    ОбластьШапка = Макет.ПолучитьОбласть("Шапка");
    ОбластьСтрока = Макет.ПолучитьОбласть("Тело");
	струк=Новый Структура;
	струк.Вставить("Код",ВхСтрокаКонтрагент.Контрагент.Код);
	струк.Вставить("Наименование",ВхСтрокаКонтрагент.Контрагент.Наименование);	
	струк.Вставить("Адрес",ВхСтрокаКонтрагент.Контрагент.Адрес);
	ОбластьШапка.Параметры.Заполнить(струк);
	 ТабДок.Вывести(ОбластьШапка);

	    ТабДок.НачатьАвтогруппировкуСтрок();
	

   РекурсивныйВыводСтрок(ТабДок,ОбластьСтрока,ВыборкаДетали);
    ТабДок.ЗакончитьАвтогруппировкуСтрок();
	       	    ТабДок.Показать();
    //ТабДок.Записать("C:\Users\User\Desktop\1.xls", ТипФайлаТабличногоДокумента.XLS); 

КонецПроцедуры
Процедура РекурсивныйВыводСтрок(ТабДок, ОбластьСтрока, ВыборкаДетали)   
			
				
	Пока ВыборкаДетали.Следующий() Цикл
		 
        ЗаполнитьЗначенияСвойств(ОбластьСтрока.Параметры, ВыборкаДетали);
        ТабДок.Вывести(ОбластьСтрока, ВыборкаДетали.Уровень());
        ВыборкаРезультат = ВыборкаДетали.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
        РекурсивныйВыводСтрок(ТабДок, ОбластьСтрока, ВыборкаРезультат);
		
	КонецЦикла;
	 Если НЕ глПустоеЗначение(ВыборкаДетали.ВИ) Тогда
		_Дополнительно = Новый Структура;
				_Дополнительно.Вставить("ВариантИсполнения",ВыборкаДетали.ВИ);
				_Дополнительно.Вставить("ЕдИзм",ВыборкаДетали.Номенклатура.БазоваяЕдИзм);
				_ШК = глСформироватьВнутреннийШтрихкод(ВыборкаДетали.Номенклатура,_Дополнительно);
				  _Дополнительно.Вставить("_ШК",_ШК);
		         ОбластьСтрока.Параметры.Заполнить(_Дополнительно);

		Пока ВыборкаДетали.Следующий() Цикл
		  _Дополнительно = Новый Структура;
				_Дополнительно.Вставить("ВариантИсполнения",ВыборкаДетали.ВИ);
				_Дополнительно.Вставить("ЕдИзм",ВыборкаДетали.Номенклатура.БазоваяЕдИзм);
				_ШК = глСформироватьВнутреннийШтрихкод(ВыборкаДетали.Номенклатура,_Дополнительно);
				   _Дополнительно.Вставить("_ШК",_ШК);
		         ОбластьСтрока.Параметры.Заполнить(_Дополнительно);

				
	КонецЦикла;
	КонецЕсли;
КонецПроцедуры
Показать
Найденные решения
27. antz 07.11.18 14:33 Сейчас в теме
(26) Конечно, мы же строку не выводим, ыхыхы

Процедура РекурсивныйВыводСтрок(ТабДок, ОбластьСтрока, ВыборкаДетали)   
      
    Пока ВыборкаДетали.Следующий() Цикл
         
        ЗаполнитьЗначенияСвойств(ОбластьСтрока.Параметры, ВыборкаДетали);
        ТабДок.Вывести(ОбластьСтрока, ВыборкаДетали.Уровень());
        ВыборкаРезультат = ВыборкаДетали.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
        
        Если ВыборкаДетали.Номенклатура.ЭтоГруппа Тогда
            РекурсивныйВыводСтрок(ТабДок, ОбластьСтрока, ВыборкаРезультат);
        Иначе
             Пока ВыборкаРезультат.Следующий() Цикл
                   Если НЕ глПустоеЗначение(ВыборкаРезультат.ВИ) Тогда 
                     _Дополнительно = Новый Структура;
                     _Дополнительно.Вставить("ВариантИсполнения",ВыборкаРезультат.ВИ);
                     _Дополнительно.Вставить("ЕдИзм",ВыборкаРезультат.Номенклатура.БазоваяЕдИзм);
                    _ШК = глСформироватьВнутреннийШтрихкод(ВыборкаРезультат.Номенклатура,_Дополнительно);
                  _Дополнительно.Вставить("_ШК",_ШК);
                 ОбластьСтрока.Параметры.Заполнить(_Дополнительно);
                 ТабДок.Вывести(ОбластьСтрока, ВыборкаДетали.Уровень() + 1);
             КонецЕсли;
       КонецЦикла;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
Показать
user1008893; +1 Ответить
Остальные ответы
Избранное Подписка Сортировка: Древо
2. antz 07.11.18 12:35 Сейчас в теме
Потому что получение штрихкода почему-то после цикла обхода выборки.

upd: а, не разобрался сперва. Отладчик что говорит?
3. user1008893 07.11.18 12:41 Сейчас в теме
(2)без разницы в какой последовательности,НЕОПРЕДЕЛЕНО
5. antz 07.11.18 12:45 Сейчас в теме
(3) Ну вот смотри. Ты вызываешь вывод рекурсивно, чтобы вывести иерархию номенклатуры и для самого нижнего уровня - штрих-коды, так? В процедуре ты в любом случае проходишь циклом ВСЮ входящую выборку и потом смотришь - есть ли в уже пройденной выборке ВИ. Ясен пень, там будет неопределено.Тебе нужно ветвить процедуру в зависимости от того группой является номенклатура или нет.
6. user1008893 07.11.18 12:55 Сейчас в теме
(5)
Процедура ВыгрузитьШаблон(ВхСтрокаКонтрагент)
	
Запрос = Новый Запрос;
	Запрос.Текст = 
		"ВЫБРАТЬ
		|	ВариантыИсполнения.Владелец КАК Номенклатура,
		|	ВариантыИсполнения.Ссылка КАК ВИ
		|ИЗ
		|	Справочник.ВариантыИсполнения КАК ВариантыИсполнения
		|ГДЕ
		|	ВариантыИсполнения.ПометкаУдаления = ЛОЖЬ
		|	И ВариантыИсполнения.Владелец.ПометкаУдаления = ЛОЖЬ
		|	И ВариантыИсполнения.Владелец В ИЕРАРХИИ(&Номенклатура)
		|	И ВариантыИсполнения.Активность
		|	И ВариантыИсполнения.Владелец.Активность
		|	И ВариантыИсполнения.ТипВИ = ЗНАЧЕНИЕ(Перечисление.ТипыВариантовИсполнения.Стандартный)
		|
		|СГРУППИРОВАТЬ ПО
		|	ВариантыИсполнения.Владелец,
		|	ВариантыИсполнения.Ссылка
		|ИТОГИ ПО
		|	Номенклатура ИЕРАРХИЯ
		|АВТОУПОРЯДОЧИВАНИЕ";
  		 Запрос.УстановитьПараметр("Номенклатура", НоменклатураИерархия.ВыгрузитьЗначения());	
		
	   ВыборкаДетали = Запрос.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);    
    
    ТабДок = Новый ТабличныйДокумент;
        
    Макет = ПолучитьМакет("Макет");
    ОбластьШапка = Макет.ПолучитьОбласть("Шапка");
    ОбластьСтрока = Макет.ПолучитьОбласть("Тело");
	струк=Новый Структура;
	струк.Вставить("Код",ВхСтрокаКонтрагент.Контрагент.Код);
	струк.Вставить("Наименование",ВхСтрокаКонтрагент.Контрагент.Наименование);	
	струк.Вставить("Адрес",ВхСтрокаКонтрагент.Контрагент.Адрес);
	ОбластьШапка.Параметры.Заполнить(струк);
	 ТабДок.Вывести(ОбластьШапка);

	    ТабДок.НачатьАвтогруппировкуСтрок();
	

   РекурсивныйВыводСтрок(ТабДок,ОбластьСтрока,ВыборкаДетали);
    ТабДок.ЗакончитьАвтогруппировкуСтрок();
	       	    ТабДок.Показать();
    //ТабДок.Записать("C:\Users\User\Desktop\1.xls", ТипФайлаТабличногоДокумента.XLS); 

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

		Пока ВыборкаДетали.Следующий() Цикл
		  _Дополнительно = Новый Структура;
				_Дополнительно.Вставить("ВариантИсполнения",ВыборкаДетали.ВИ);
				_Дополнительно.Вставить("ЕдИзм",ВыборкаДетали.Номенклатура.БазоваяЕдИзм);
				_ШК = глСформироватьВнутреннийШтрихкод(ВыборкаДетали.Номенклатура,_Дополнительно);
				   _Дополнительно.Вставить("_ШК",_ШК);
		         ОбластьСтрока.Параметры.Заполнить(_Дополнительно);

				
	КонецЦикла;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
Показать
так?
только тут ошибка Значение не является значением объектного типа (ЭтоГруппа)
Если ВыборкаДетали.Номенклатура.ЭтоГруппа Тогда
8. ben19791010 07.11.18 12:57 Сейчас в теме
(6) блин, да убери ты группы отовсюду пока
суть поймешь, а потом будешь группировать
11. antz 07.11.18 13:04 Сейчас в теме
(6) неправильно выразился) Ветвить не саму процедуру, а вызывать ее и подавать на вход ВыборкаДетали.Выбрать() если в текущей выборке номенклатура - группа. Если номенклатура - не группа - тогда уже в этой же процедуре продолжать тогда ВыборкаДетали.Выбрать() обрабатывать здесь же и выводить штрихкоды.

Пока ВыборкаДетали.Следующий() Цикл
         
        ЗаполнитьЗначенияСвойств(ОбластьСтрока.Параметры, ВыборкаДетали);
        ТабДок.Вывести(ОбластьСтрока, ВыборкаДетали.Уровень());
        ВыборкаРезультат = ВыборкаДетали.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
        Если ВыборкаДетали.Номенклатура.ЭтоГруппа Тогда
            РекурсивныйВыводСтрок(ТабДок, ОбластьСтрока, ВыборкаРезультат);
        Иначе
             Пока ВыборкаРезультат.Следующий() Цикл
                     _Дополнительно = Новый Структура;
                _Дополнительно.Вставить("ВариантИсполнения",ВыборкаРезультат.ВИ);
                _Дополнительно.Вставить("ЕдИзм",ВыборкаРезультат.Номенклатура.БазоваяЕдИзм);
                _ШК = глСформироватьВнутреннийШтрихкод(ВыборкаРезультат.Номенклатура,_Дополнительно);
                  _Дополнительно.Вставить("_ШК",_ШК);
                 ОбластьСтрока.Параметры.Заполнить(_Дополнительно);
       КонецЦикла;
КонецЕсли;
КонецЦикла;
Показать


Вот так должно взлететь, думаю.
12. user1008893 07.11.18 13:06 Сейчас в теме
(11) Значение не является значением объектного типа (Код)
_НовыйШтрихкод = _НовыйШтрихкод + ?(ВхВариантИсполнения = Неопределено, "000000", Формат(ВхВариантИсполнения.Код, "ЧЦ=6; ЧВН=; ЧГ=0"));
13. antz 07.11.18 13:07 Сейчас в теме
(12) на пустое значение забыл я проверку воткнуть.
14. user1008893 07.11.18 13:14 Сейчас в теме
(13)так?
или туплю
Процедура РекурсивныйВыводСтрок(ТабДок, ОбластьСтрока, ВыборкаДетали)

Пока ВыборкаДетали.Следующий() Цикл

ЗаполнитьЗначенияСвойств(ОбластьСтрока.Параметры, ВыборкаДетали);
ТабДок.Вывести(ОбластьСтрока, ВыборкаДетали.Уровень());
ВыборкаРезультат = ВыборкаДетали.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);

Если ВыборкаДетали.Номенклатура.ЭтоГруппа Тогда
РекурсивныйВыводСтрок(ТабДок, ОбластьСтрока, ВыборкаРезультат);
Иначе

Пока ВыборкаРезультат.Следующий() Цикл
_Дополнительно = Новый Структура;
_Дополнительно.Вставить("ВариантИсполнения",ВыборкаДетали.ВИ);
_Дополнительно.Вставить("ЕдИзм",ВыборкаДетали.Номенклатура.БазоваяЕдИзм);
_ШК = глСформироватьВнутреннийШтрихкод(ВыборкаДетали.Номенклатура,_Дополнительно);
_Дополнительно.Вставить("_ШК",_ШК);
ОбластьСтрока.Параметры.Заполнить(_Дополнительно);
КонецЦикла;

КонецЕсли;
Если НЕ глПустоеЗначение(ВыборкаДетали.ВИ) Тогда
_Дополнительно = Новый Структура;
_Дополнительно.Вставить("ВариантИсполнения",ВыборкаДетали.ВИ);
_Дополнительно.Вставить("ЕдИзм",ВыборкаДетали.Номенклатура.БазоваяЕдИзм);
_ШК = глСформироватьВнутреннийШтрихкод(ВыборкаДетали.Номенклатура,_Дополнительно);
_Дополнительно.Вставить("_ШК",_ШК);
ОбластьСтрока.Параметры.Заполнить(_Дополнительно);
иначе
Пока ВыборкаРезультат.Следующий() Цикл
_Дополнительно = Новый Структура;
_Дополнительно.Вставить("ВариантИсполнения",ВыборкаДетали.ВИ);
_Дополнительно.Вставить("ЕдИзм",ВыборкаДетали.Номенклатура.БазоваяЕдИзм);
_ШК = глСформироватьВнутреннийШтрихкод(ВыборкаДетали.Номенклатура,_Дополнительно);
_Дополнительно.Вставить("_ШК",_ШК);
ОбластьСтрока.Параметры.Заполнить(_Дополнительно);
КонецЦикла;

КонецЕсли;
КонецЦикла;
КонецПроцедуры
15. antz 07.11.18 13:16 Сейчас в теме
(14)

Пока ВыборкаДетали.Следующий() Цикл
         
        ЗаполнитьЗначенияСвойств(ОбластьСтрока.Параметры, ВыборкаДетали);
        ТабДок.Вывести(ОбластьСтрока, ВыборкаДетали.Уровень());
        ВыборкаРезультат = ВыборкаДетали.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
        Если ВыборкаДетали.Номенклатура.ЭтоГруппа Тогда
            РекурсивныйВыводСтрок(ТабДок, ОбластьСтрока, ВыборкаРезультат);
        Иначе
             Пока ВыборкаРезультат.Следующий() Цикл
                   Если НЕ глПустоеЗначение(ВыборкаРезультат.ВИ) Тогда 
                     _Дополнительно = Новый Структура;
                     _Дополнительно.Вставить("ВариантИсполнения",ВыборкаРезультат.ВИ);
                     _Дополнительно.Вставить("ЕдИзм",ВыборкаРезультат.Номенклатура.БазоваяЕдИзм);
                    _ШК = глСформироватьВнутреннийШтрихкод(ВыборкаРезультат.Номенклатура,_Дополнительно);
                  _Дополнительно.Вставить("_ШК",_ШК);
                 ОбластьСтрока.Параметры.Заполнить(_Дополнительно);
             КонецЕсли;
       КонецЦикла;
КонецЕсли;
КонецЦикла;
Показать
16. user1008893 07.11.18 13:18 Сейчас в теме
(15) так даже вариант исполнения не выводит
17. user1008893 07.11.18 13:25 Сейчас в теме
(15) ЗаполнитьЗначенияСвойств(ОбластьСтрока.Параметры, ВыборкаДетали);
ТабДок.Вывести(ОбластьСтрока, ВыборкаДетали.Уровень());
ВыборкаРезультат = ВыборкаДетали.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
РекурсивныйВыводСтрок(ТабДок, ОбластьСтрока, ВыборкаРезультат);
Если ВыборкаДетали.Номенклатура.ЭтоГруппа Тогда

Сделала так ВИ вышел,но шк нет
18. antz 07.11.18 13:28 Сейчас в теме
(17) Так, что-то я сам уже туплю. Щас.
_ШК-то возвращается?
19. user1008893 07.11.18 13:34 Сейчас в теме
(18)сделала ВИ везде,но все равно ВИ не выводится,зато шк появился
20. user1008893 07.11.18 13:38 Сейчас в теме
(18)вот так сейчас
Процедура РекурсивныйВыводСтрок(ТабДок, ОбластьСтрока, ВыборкаДетали)   
	  
	Пока ВыборкаДетали.Следующий() Цикл
         
        ЗаполнитьЗначенияСвойств(ОбластьСтрока.Параметры, ВыборкаДетали);
        ТабДок.Вывести(ОбластьСтрока, ВыборкаДетали.Уровень());
        ВыборкаРезультат = ВыборкаДетали.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
		
		Если ВыборкаДетали.Номенклатура.ЭтоГруппа Тогда
            РекурсивныйВыводСтрок(ТабДок, ОбластьСтрока, ВыборкаРезультат);
        Иначе
             Пока ВыборкаРезультат.Следующий() Цикл
                   Если НЕ глПустоеЗначение(ВыборкаРезультат.ВИ) Тогда 
                     _Дополнительно = Новый Структура;
                     _Дополнительно.Вставить("ВИ",ВыборкаРезультат.ВИ);
                     _Дополнительно.Вставить("ЕдИзм",ВыборкаРезультат.Номенклатура.БазоваяЕдИзм);
                    _ШК = глСформироватьВнутреннийШтрихкод(ВыборкаРезультат.Номенклатура,_Дополнительно);
                  _Дополнительно.Вставить("_ШК",_ШК);
                 ОбластьСтрока.Параметры.Заполнить(_Дополнительно);
             КонецЕсли;
       КонецЦикла;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
Показать
Прикрепленные файлы:
21. antz 07.11.18 13:55 Сейчас в теме
(20) процедуру глСформироватьВнутреннийШтрихкод покажи.
22. user1008893 07.11.18 13:59 Сейчас в теме
(21)
Процедура ВывестиСтроку(ВхВыборка,Итератор,ВхЛист,колво)

//	Если ВхВыборка.Номенклатура.ЭтоГруппа Тогда	  

//		ВхЛист.Cells(Итератор,2).Value = Строка(Итератор);
//		ВхЛист.Cells(Итератор,3).Value = Строка(СокрЛП(ВхВыборка.Номенклатура.Код));	
//		ВхЛист.Cells(Итератор,4).Value = Строка(СокрЛП(ВхВыборка.Номенклатура.Наименование));
//		ВхЛист.Cells(Итератор,5).Value = "";
//		ВхЛист.Cells(Итератор,6).Value = "";
//		ВхЛист.Cells(Итератор,2).Font.Bold = 1;
//		ВхЛист.Cells(Итератор,3).Font.Bold = 1;
//		ВхЛист.Cells(Итератор,4).Font.Bold = 1;
//		ВхЛист.Cells(Итератор,5).Font.Bold = 1;
//		ВхЛист.Cells(Итератор,6).Font.Bold = 1;
//		Итератор = Итератор + 1;
//				ВыборкаНоменклатура = ВхВыборка.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
//		      		Если ВыборкаНоменклатура.Следующий() Тогда
//			ВывестиСтроку(ВыборкаНоменклатура,Итератор,ВхЛист,колво);
//		КонецЕсли;
//		

//	Иначе	
//		
//		Если глПустоеЗначение(ВхВыборка.ВИ) Тогда
//			
//			ВыборкаНоменклатура = ВхВыборка.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
//			 			Если ВыборкаНоменклатура.Следующий() Тогда
//				ВывестиСтроку(ВыборкаНоменклатура,Итератор,ВхЛист,колво);
//			КонецЕсли;
//			 
//			 		Иначе	
//			
//			_Дополнительно = Новый Структура;
//			_Дополнительно.Вставить("ВариантИсполнения",ВхВыборка.ВИ);
//			_Дополнительно.Вставить("ЕдИзм",ВхВыборка.Номенклатура.БазоваяЕдИзм);
//			_ШК = глСформироватьВнутреннийШтрихкод(ВхВыборка.Номенклатура,_Дополнительно);
//			
//			ВхЛист.Cells(Итератор,2).Value = Итератор;
//			ВхЛист.Cells(Итератор,3).Value = _ШК;	
//			ВхЛист.Cells(Итератор,4).Value = Строка(СокрЛП(ВхВыборка.Номенклатура.Наименование));
//			ВхЛист.Cells(Итератор,5).Value = Строка(СокрЛП(ВхВыборка.ВИ.Наименование));
//			ВхЛист.Cells(Итератор,6).Value = "";
//			Итератор = Итератор + 1;
//			
//			Пока ВхВыборка.Следующий() Цикл
//				
//				_Дополнительно = Новый Структура;
//				_Дополнительно.Вставить("ВариантИсполнения",ВхВыборка.ВИ);
//				_Дополнительно.Вставить("ЕдИзм",ВхВыборка.Номенклатура.БазоваяЕдИзм);
//				_ШК = глСформироватьВнутреннийШтрихкод(ВхВыборка.Номенклатура,_Дополнительно);
//				
//				ВхЛист.Cells(Итератор,2).Value = Итератор;
//				ВхЛист.Cells(Итератор,3).Value = _ШК;	
//				ВхЛист.Cells(Итератор,4).Value = Строка(СокрЛП(ВхВыборка.Номенклатура.Наименование));
//				ВхЛист.Cells(Итератор,5).Value = Строка(СокрЛП(ВхВыборка.ВИ.Наименование));
//				ВхЛист.Cells(Итератор,6).Value = "";
//				Итератор = Итератор + 1;
//				 
//			КонецЦикла;
//			
//		КонецЕсли;
//			КонецЕсли;
//	
//	 КонецПроцедуры
Показать

у меня было вот таки все работало
23. antz 07.11.18 14:07 Сейчас в теме
(22) Ну я же не просил показать как было) Покажи глСформироватьВнутреннийШтрихкод.
24. user1008893 07.11.18 14:11 Сейчас в теме
(23)
Функция глСформироватьВнутреннийШтрихкод(ВхВладелец, ВхДополнительно = Неопределено) Экспорт

	Если ВхДополнительно = Неопределено Тогда
		
		ВхВариантИсполнения = Неопределено;
		ВхЕдИзм 			= Неопределено;
		Если ЕстьДоступ.РСУ_СерийныйУчет() Тогда // РСУ.СерийныйУчет
			ВхСерия 			= Неопределено;
		КонецЕсли;
		
	ИначеЕсли ТипЗнч(ВхДополнительно) = Тип("Структура") Тогда
		
		ВхДополнительно.Свойство("ВариантИсполнения", ВхВариантИсполнения);
		ВхДополнительно.Свойство("ЕдИзм", ВхЕдИзм);
		Если ЕстьДоступ.РСУ_СерийныйУчет() Тогда // РСУ.СерийныйУчет
			ВхДополнительно.Свойство("Серия", ВхСерия);
		КонецЕсли;
		
	Иначе
		
		ВызватьИсключение("глСформироватьВнутреннийШтрихкод(): Неподдерживаемый тип параметра ВхДополнительно - <" + ТипЗнч(ВхДополнительно) + ">");
		
	КонецЕсли;
	
	Если ТипЗнч(ВхВладелец) = Тип("СправочникСсылка.Номенклатура") Тогда                   // префикс 20
		
		_НовыйШтрихкод = "20" + Формат(ВхВладелец.Код, "ЧЦ=9; ЧВН=; ЧГ=0");
		_НовыйШтрихкод = _НовыйШтрихкод + ?(ВхВариантИсполнения = Неопределено, "000000", Формат(ВхВариантИсполнения.Код, "ЧЦ=6; ЧВН=; ЧГ=0"));
		_НовыйШтрихкод = _НовыйШтрихкод + ?(ВхЕдИзм = Неопределено, Формат(ВхВладелец.БазоваяЕдИзм.Код, "ЧЦ=1"), Формат(ВхЕдИзм.Код, "ЧЦ=1"));	
		
	ИначеЕсли ТипЗнч(ВхВладелец) = Тип("СправочникСсылка.Пользователи") Тогда              // префикс 21
		                                                                      
		_НовыйШтрихкод = "21" + Формат(ВхВладелец.КодШК, "ЧЦ=3; ЧВН=; ЧГ=0");
		
	ИначеЕсли ТипЗнч(ВхВладелец) = Тип("СправочникСсылка.ТехнологическиеОперации") Тогда   // префикс 22
		
		_НовыйШтрихкод = "22" + Формат(ВхВладелец.Код, "ЧЦ=5; ЧВН=; ЧГ=0");
			
	ИначеЕсли ТипЗнч(ВхВладелец) = Тип("СправочникСсылка.СдельныеОперации") Тогда          // префикс 23
		
		_НовыйШтрихкод = "23" + Формат(ВхВладелец.Код, "ЧЦ=5; ЧВН=; ЧГ=0");
		
	ИначеЕсли ТипЗнч(ВхВладелец) = Тип("ДокументСсылка.ЗаказНаПроизводство") Тогда          // префикс 24 

		_НовыйШтрихкод = "24" + Формат(КодСимвола(ВхВладелец.Номер, 1), "ЧЦ=4; ЧВН=; ЧГ=0"); // префикс номера документа (префикс фирмы)
		_НовыйШтрихкод = _НовыйШтрихкод + Прав(ВхВладелец.Номер, 8);
        _НовыйШтрихкод = _НовыйШтрихкод + Формат(ВхВладелец.Дата, "ДФ=yyyy");
Показать
25. antz 07.11.18 14:24 Сейчас в теме
(24) Ясно-понятно, так я и думал)

короче, пиши

_Дополнительно.Вставить("ВариантИсполнения", ВыборкаРезультат.ВИ)

параметр в макете обзывай ВариантИсполнения.
26. user1008893 07.11.18 14:29 Сейчас в теме
(25)все хорошо,но там у каждой номенклатуры по 5 ВИ исполнения,а выводит теперь только 1
Прикрепленные файлы:
27. antz 07.11.18 14:33 Сейчас в теме
(26) Конечно, мы же строку не выводим, ыхыхы

Процедура РекурсивныйВыводСтрок(ТабДок, ОбластьСтрока, ВыборкаДетали)   
      
    Пока ВыборкаДетали.Следующий() Цикл
         
        ЗаполнитьЗначенияСвойств(ОбластьСтрока.Параметры, ВыборкаДетали);
        ТабДок.Вывести(ОбластьСтрока, ВыборкаДетали.Уровень());
        ВыборкаРезультат = ВыборкаДетали.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
        
        Если ВыборкаДетали.Номенклатура.ЭтоГруппа Тогда
            РекурсивныйВыводСтрок(ТабДок, ОбластьСтрока, ВыборкаРезультат);
        Иначе
             Пока ВыборкаРезультат.Следующий() Цикл
                   Если НЕ глПустоеЗначение(ВыборкаРезультат.ВИ) Тогда 
                     _Дополнительно = Новый Структура;
                     _Дополнительно.Вставить("ВариантИсполнения",ВыборкаРезультат.ВИ);
                     _Дополнительно.Вставить("ЕдИзм",ВыборкаРезультат.Номенклатура.БазоваяЕдИзм);
                    _ШК = глСформироватьВнутреннийШтрихкод(ВыборкаРезультат.Номенклатура,_Дополнительно);
                  _Дополнительно.Вставить("_ШК",_ШК);
                 ОбластьСтрока.Параметры.Заполнить(_Дополнительно);
                 ТабДок.Вывести(ОбластьСтрока, ВыборкаДетали.Уровень() + 1);
             КонецЕсли;
       КонецЦикла;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
Показать
user1008893; +1 Ответить
28. user1008893 07.11.18 14:36 Сейчас в теме
(27) Спасибо большое за помощь)))
29. user1008893 07.11.18 14:55 Сейчас в теме
(27)что то сейчас только заметила одну фигню
Короче он вариант исполнения заполняет там где не надо
по моему должно быть как у первой полки
Прикрепленные файлы:
30. antz 07.11.18 14:59 Сейчас в теме
(29) Параметры надо очищать.
31. user1008893 07.11.18 15:04 Сейчас в теме
32. antz 07.11.18 15:29 Сейчас в теме
(31) Ну зачем очищать ТабДок, который мы с таким трудом заполнили? После ТабДок.Вывести()

ОбластьСтрока.Параметры.ВариантИсполнения = "";


ну и для остальных так, если потребуется.
user1008893; +1 Ответить
33. user1008893 07.11.18 15:32 Сейчас в теме
(32)все сработало,спасибо))
34. user1008893 07.11.18 15:36 Сейчас в теме
(33)можно еще вопрос?
короче я должна сохранить этот документ в папку которую выберет пользователь.Вот я пишу
ТабДок.Записать(КаталогШаблонов+"_ШаблонЗаказа.xls");
каталог шаблонов-это реквизит формы.
что я делаю не так?
Ошибку выдает при открытии документа и сохраняет его просто на рабочий стол
Действительный формат открываемого файла отличается от указываемого его расширением имени файла. Перед открытием данного файла убедитесь что он не поврежден и получен из надежного источника. Открыть этот файл сейчас?
35. user1008893 07.11.18 16:00 Сейчас в теме
(34)
ПолноеИмяФайла =  КаталогШаблонов +"_ШаблонЗаказа.xls";
	ТабДок.Записать(ПолноеИмяФайла,ТипФайлаТабличногоДокумента.XLS);

вот так работает,но сохраняет на рабочий стол
36. user1008893 08.11.18 08:09 Сейчас в теме
4. ben19791010 07.11.18 12:45 Сейчас в теме
7. user1008893 07.11.18 12:57 Сейчас в теме
9. d.batovskiy 07.11.18 12:59 Сейчас в теме
Попробуйте так:


Пока ВыборкаДетали.Следующий() Цикл

ЗаполнитьЗначенияСвойств(ОбластьСтрока.Параметры, ВыборкаДетали);
ТабДок.Вывести(ОбластьСтрока, ВыборкаДетали.Уровень());
ВыборкаРезультат = ВыборкаДетали.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
РекурсивныйВыводСтрок(ТабДок, ОбластьСтрока, ВыборкаРезультат);


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


КонецЕсли;
КонецЦикла;
user1008893; +1 Ответить
10. user1008893 07.11.18 13:03 Сейчас в теме
(9) все шикарно,только для первых не написался шк.
Прикрепленные файлы:
Оставьте свое сообщение
Новые вопросы с вознаграждением
Автор темы объявил вознаграждение за найденный ответ, его получит тот, кто первый поможет автору.

Вакансии

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

Программист 1С
Москва
Полный день

Программист 1С
Видное
Полный день

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

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