7.7 Периодический, подчиненный справочник

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 7.7"", создана пользователем xxx949, 6 июн 2013.

  1. TopicStarter Overlay
    xxx949
    Offline

    xxx949 Опытный в 1С

    Регистрация:
    29 июл 2010
    Сообщения:
    302
    Симпатии:
    1
    Баллы:
    29
    Люди добрые, помогите, уже неделю голову ломаю, суть проблемы в следующем, мне нужно в DBF файл выгрузитьвесь справочник цен номенклатуры, в таком виде (Дата, Номенклатура, ТипЦен, Единица, Цена), делаю примерно так:

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

    Код:
    17.08.12
    БАРБЕКЮ МАНГАЛЫ ШАМПУРА
    ПБОЮЛ Опт
    0
    0
    23.08.12
    БАРБЕКЮ МАНГАЛЫ ШАМПУРА
    П  Базовая цена
    0
    0
    07.11.12
    БАРБЕКЮ МАНГАЛЫ ШАМПУРА
    П  ООО "Содействие"
    0
    0
    не могу понять, ведь номенклатуры в справочнике очень много, и у каждой есть цены, а судя по результату он взял одну номенклатуру и вывел вроде по ней типыцен, это правильно, но почему только по одной и где цены?

    Подскажите пожалуйста, где ошибся, спасибо большое
  2. Бухгалтерский угодник
    Offline

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

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Вам нужно выгрузить всю историю? Сомневаюсь.... Так проще
    Код:
    Номенклатура = СоздатьОбъект("Справочник.Номенклатура");
    Номенклатура.ВыбратьЭлементы();
    спр=СоздатьОбъект("Справочник.Цены");
    спр.ВыбратьЭлементы(); //перебираем элементы
    Пока Номенклатура.ПолучитьЭлемент() = 1 Цикл
    Если Номенклатура.ЭтоГруппа()=1 Тогда
    продолжить;
    КонецЕсли;
    спр.ИспользоватьВладельца(Номенклатура);
    Пока спр.ПолучитьЭлемент()=1 цикл
    Сообщить(Номенклатура.Наименование);
    Сообщить(спр.ТипЦен);
    Сообщить(спр.Цена.Получить(ТекущаяДата()));
    КонецЦикла;
    КонецЦикла;
    
  3. WaRDeR
    Offline

    WaRDeR Модераторы Команда форума Модератор

    Регистрация:
    23 ноя 2006
    Сообщения:
    3.263
    Симпатии:
    14
    Баллы:
    29
    Выборку по ценам нужно делать внутри цикла перебора номенклатуры. То есть для каждой номенклатуры нужно выбрать цены, а потом их перебирать.
  4. TopicStarter Overlay
    xxx949
    Offline

    xxx949 Опытный в 1С

    Регистрация:
    29 июл 2010
    Сообщения:
    302
    Симпатии:
    1
    Баллы:
    29
    Спасибо, я уже сам увидел эту строчку, вроде сейчас все получилось ). Просто мне цены нужно перенести в другую конфу, вот я и думаю, достаточно ли им будет только последние цены, или им всеже захочется всю историю, хм...

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

    Теперь пишет:
    Единица = СпрЦены.Единица.Получить(ТекущаяДата());
    {77ТИС.ERT(94)}: Поле агрегатного объекта не обнаружено (Получить)
  5. TopicStarter Overlay
    xxx949
    Offline

    xxx949 Опытный в 1С

    Регистрация:
    29 июл 2010
    Сообщения:
    302
    Симпатии:
    1
    Баллы:
    29
    Теперь все получилось как надо, единственное не могу получить единицу, выходит пустое значение, подскажите

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

    xxx949 Опытный в 1С

    Регистрация:
    29 июл 2010
    Сообщения:
    302
    Симпатии:
    1
    Баллы:
    29
    получилось, нужно было так

    Код:
    Единица = Строка(СпрЦены.Единица);
    Капец, обычно я сижу на восьмерке, нет-нет периодически выполняю задачи на семерки, семерка все же загадочная платформа, хрен поймешь откуда ноги растут, в восьмерке мне кажется все намного понятнее и удобнее )))
  7. Бухгалтерский угодник
    Offline

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

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    или так)))
    Код:
    Единица = СпрЦены.Единица.Наименование;

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