7.7 Цены

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 7.7"", создана пользователем Siddy, 24 окт 2009.

  1. TopicStarter Overlay
    Siddy
    Offline

    Siddy Опытный в 1С

    Регистрация:
    18 мар 2009
    Сообщения:
    311
    Симпатии:
    0
    Баллы:
    26
    7.7 ТиС

    Подскажите, пожалуйста, как обрашаться к оптовым ценам номенклатуры и как обращаться к розничным, имея докумет реализация? С потовыми, впринципе, понятно, "Докум.Цена"...
  2. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Если речь идет о ТиС:

    Спр.Цены подчинен спр.Номенклатура. Также спр.Цены имеет реквизит ТипЦены (Спр. ТипыЦен опт-розница и т.д). Сами цены - периодические. Для того чтобы получить цену нужно использовать алгоритм:

    Код:
    Цена=0;
    Спр=СоздатьОбъект("Справочник.Цены");
    Спр.ИспользоватьВладельца(Номенклатура);
    Спр.ВыбратьЭлементы();
    Пока Спр.ПолучитьЭлемент()=1 Цикл
    Если Спр.ТипЦены=НужныйТипЦен Тогда
    Цена=Спр.Цена.Получить(МояДата);
    Прервать;
    КонецЕсли;
    КонецЦикла;
    
    
    
    МояДата - значение типа дата на которую вы хотите получить цену
    Номенклатура - значение типа спр.Номенклатура
    НужныйТипЦен - значение типа Спр.ТипыЦен
  3. TopicStarter Overlay
    Siddy
    Offline

    Siddy Опытный в 1С

    Регистрация:
    18 мар 2009
    Сообщения:
    311
    Симпатии:
    0
    Баллы:
    26
    ммм... что-то я совсем туплю... почему-то в цикл не заходит

    Код:
    Цена=0; 
    
    Спр=СоздатьОбъект("Справочник.Цены");
    Спр.ИспользоватьВладельца(Докум.Номенклатура);
    Спр.ВыбратьЭлементы();
    Пока Спр.ПолучитьЭлемент()=1 Цикл
    Если Спр.ТипЦен = "Розничные" Тогда
    Цена=Спр.Цена.Получить(ТекущаяДата());
    Прервать;
    КонецЕсли;
    КонецЦикла;
    
    
  4. ASh
    Offline

    ASh Опытный в 1С

    Регистрация:
    10 сен 2008
    Сообщения:
    568
    Симпатии:
    0
    Баллы:
    26
    Докум.Номенклатура откуда берется? Полагаю, что Докум - это ссылка на документ. Тогда для того, чтобы обратиться к содержимому табличной части, нужно сперва строки выбрать

    Код:
    Докум.ВыбратьСтроки();
    Пока Докум.ПолучитьСтроку()=1 Цикл
    Цена=0; 
    Спр=СоздатьОбъект("Справочник.Цены");
    Спр.ИспользоватьВладельца(Докум.Номенклатура);
    Спр.ВыбратьЭлементы();
    Пока Спр.ПолучитьЭлемент()=1 Цикл
    Если Спр.ТипЦен = "Розничные" Тогда
    Цена=Спр.Цена.Получить(ТекущаяДата());
    Прервать;
    КонецЕсли;
    КонецЦикла;
    КонецЦикла;
    
  5. TopicStarter Overlay
    Siddy
    Offline

    Siddy Опытный в 1С

    Регистрация:
    18 мар 2009
    Сообщения:
    311
    Симпатии:
    0
    Баллы:
    26
    Перебор табличной части есть, просто почему-то в цикл не заходит. Вот примерный код процедуры

    Код:
    Процедура Печать(Докум, Excel, NewBook, НомерПоследнейСтроки, Устройство=0, КолвоКопий=1)
    Перем НачПовт, КонПовт, ЗапомнимАртикул, ЗапомнимКоличество, Выход;
    Счетчик		= 0;                       
    СтолбецАртикул	= 1;
    СтолбецЦена		= 3;
    СтолбецКоличество 	= 2;
    СтолбецСумма		= 4;
    Столбец                        = 1;            
    НомСтроки                     = 0;
    Докум.ВыбратьСтроки();
    Рег = СоздатьОбъект("Регистр.ПартииНаличие");
    УчПолитика= Докум.ЮрЛицо.МетодРасчетаСебестоимости.Получить(Докум.ДатаДок);
    
    Пока Докум.ПолучитьСтроку() = 1 Цикл    
    Рег.ВыбратьДвиженияДокумента(Докум.ТекущийДокумент());
    Пока Рег.ПолучитьДвижение() = 1  Цикл
    Если Рег.НомерСтроки() = Докум.НомерСтроки Тогда
    НомСтроки  = НомСтроки + 1;
    
    
    Если Счетчик = 0 Тогда
    НомСтроки2 = НомерПоследнейСтроки;				
    Иначе
    НомСтроки2 = НомСтроки2+1;
    КонецЕсли;
    
    
    Цена=0; 
    
    Спр=СоздатьОбъект("Справочник.Цены");
    Спр.ИспользоватьВладельца(Докум.Номенклатура);
    Спр.ВыбратьЭлементы();
    Пока Спр.ПолучитьЭлемент()=1 Цикл
    Если Спр.ТипЦен = "Розничные" Тогда
    //Вот сюда заходить не хочет. Хотя в отладчике в Табло: Спр.ТипЦен = Розничные
    Цена=Спр.Цена.Получить(ТекущаяДата());
    Прервать;
    КонецЕсли;
    КонецЦикла;
    
    
    Если Рег.Номенклатура.ВидНоменклатуры <> Перечисление.ВидыНоменклатуры.Услуга Тогда
    Количество 		= Рег.Количество;
    Сумма			= Цена * Рег.Количество; 
    Иначе
    Количество 		= Докум.Количество;
    Сумма			= Цена * Докум.Количество;
    КонецЕсли;				
    
    Ячейка = Excel.Cells(НомСтроки2,СтолбецАртикул);    
    Ячейка.ColumnWidth = 25;
    Ячейка.Value = СокрЛП(Докум.Номенклатура.ПолнНаименование );
    
    
    
    Ячейка = Excel.Cells(НомСтроки2,СтолбецКоличество);
    Ячейка.Value = Количество;
    Ячейка.ColumnWidth = 25; 
    
    Ячейка = Excel.Cells(НомСтроки2,СтолбецСумма);
    Ячейка.Value = Сумма;
    Ячейка.ColumnWidth = 25;	 
    
    Ячейка = Excel.Cells(НомСтроки2,СтолбецЦена);
    Ячейка.Value = Цена;
    Ячейка.ColumnWidth = 25;	
    
    Счетчик=Счетчик+1;
    КонецЕсли;		
    КонецЦикла;          
    КонецЦикла;
    НомерПоследнейСтрокиДок = НомСтроки2;
    
    
    
    Если Докум.УчитыватьНДС = 1 Тогда
    СуммаНДСИтог = Докум.Итог("СуммаНДС");
    Если Докум.СуммаВклНДС = 0 Тогда
    СуммаИтог = СуммаИтог + СуммаНДСИтог;
    КонецЕсли;
    КонецЕсли;
    
    Если Докум.УчитыватьНП = 1 Тогда
    СуммаНПИтог = Докум.Итог("СуммаНП");
    Если Докум.СуммаВклНП = 0 Тогда
    СуммаИтог = СуммаИтог + СуммаНПИтог;
    КонецЕсли;
    КонецЕсли;                              
    
    
    КонецПроцедуры
    
    
  6. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Код:
    Пока Спр.ПолучитьЭлемент()=1 <span style='cursor: pointer; color:red' Onclick="window.open('http://www.1c-pro.ru/wiki/index.php/цикл')">Цикл					</span>  
    Если Спр.ТипЦен = "Розничные" Тогда //Вот сюда заходить не хочет. Хотя в отладчике в Табло: Спр.ТипЦен = Розничные					       Цена=Спр.Цена.Получить(ТекущаяДата());					       Прервать;					  
    КонецЕсли;					
    КонецЦикла;
    
    
    Обратите пожалуйста внимание - я писал НужныйТипЦен - значение типа СПРАВОЧНИК.ТипыЦен а вы пыпаетесь сравнивать строковые величины..... Поэтому-то и не работает.

    НужныйТипЦен - элемент справочника (выбирайте на форме диалога). Ну на худой конец сделайте так:

    Код:
    Если СокрЛП(Спр.ТипЦен.Наименование) = "Розничные" Тогда //в этом случае сравниваются строки
    
    

Поделиться этой страницей