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 руб. до 150 000 руб.
Полный день

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

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

Руководитель группы сервисов ЭДО, ЭЦП и криптографии
Москва
зарплата от 150 000 руб.
Полный день

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