8.х Добавить страну

Тема в разделе "Общие вопросы "1С:Предприятие 8"", создана пользователем RuslanBLR, 10 авг 2010.

  1. alexburn
    Offline

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

    Регистрация:
    5 янв 2009
    Сообщения:
    14.782
    Симпатии:
    509
    Баллы:
    204
    Вот в процедуру НапечататьЦенники() и нужно смотреть. Или в ТаблицуДанных добавить еще одну колонку со страной.
    А откуда вы берете страну?
  2. TopicStarter Overlay
    RuslanBLR
    Offline

    RuslanBLR Опытный в 1С

    Регистрация:
    13 июл 2010
    Сообщения:
    68
    Симпатии:
    0
    Баллы:
    26
    Когда заносишь товар то вбиваешь страну. Справочники -> Выбираю товар -> вкладка "по умолчанию" там и написано Страна. Вот эту строну присвоенную товару и надо мне.
  3. alexburn
    Offline

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

    Регистрация:
    5 янв 2009
    Сообщения:
    14.782
    Симпатии:
    509
    Баллы:
    204
    Предполагаю что нужно так:
    Код:
    Процедура ДействияФормыЦенники(Кнопка)
    Если ЭлементыФормы.Список.ТекущаяСтрока = Неопределено Тогда
    // ничего нет
    Возврат;
    КонецЕсли;
    
    Данные = Новый Структура("Организация, ТаблицаДанных, ДатаПечати");
    
    ТаблицаДанных = Новый ТаблицаЗначений();
    ТаблицаДанных.Колонки.Добавить("Номенклатура");
    ТаблицаДанных.Колонки.Добавить("НоменклатураНаименование");
    ТаблицаДанных.Колонки.Добавить("ХарактеристикаНаименование");
    ТаблицаДанных.Колонки.Добавить("Цена");
    ТаблицаДанных.Колонки.Добавить("Единица");
    ТаблицаДанных.Колонки.Добавить("ЕдиницаНаименование");
    ТаблицаДанных.Колонки.Добавить("Валюта");
    
    ***ТаблицаДанных.Колонки.Добавить("Страна");***это нужно добавить
    
    
    ТипыЦен = Справочники.ТипыЦенНоменклатуры.ПолучитьФормуВыбора(, ЭтаФорма);
    ТипыЦен.ОткрытьМодально();
    
    Если тТипЦенДляПечати = Неопределено Тогда
    Возврат;
    КонецЕсли;
    
    Товар = ЭлементыФормы.Список.ТекущиеДанные.Ссылка;
    Если Товар.ЭтоГруппа Тогда
    Ответ = Вопрос("Печатать ценники по характеристикам?", РежимДиалогаВопрос.ДаНет);
    Если Ответ = КодВозвратаДиалога.Да Тогда
    СХарактеристиками = Истина;
    КонецЕсли;
    ЗаполнитьТаблицуДанных(ТаблицаДанных, Товар, СХарактеристиками);
    Иначе
    Если Товар.ВестиУчетПоХарактеристикам Тогда
    Ответ = Вопрос("Печатать ценники по характеристикам?", РежимДиалогаВопрос.ДаНет);
    Если Ответ = КодВозвратаДиалога.Да Тогда
    СХарактеристиками = Истина;
    КонецЕсли;
    КонецЕсли;
    ДобавитьВТаблицу(ТаблицаДанных, Товар, тТипЦенДляПечати, СХарактеристиками);
    КонецЕсли;
    
    Данные.Организация = УправлениеПользователями.ПолучитьЗначениеПоУмолчанию(глЗначениеПеременной("глТекущийПользователь"), "ОсновнаяОрганизация");
    Данные.ТаблицаДанных = ТаблицаДанных;
    Данные.ДатаПечати = ТекущаяДата();
    
    Ценники = РаботаСДиалогами.НапечататьЦенники(Данные);
    РаботаСДиалогами.НапечататьДокумент(Ценники, , , "Ценники");
    
    тТипЦенДляПечати = Неопределено;
    
    КонецПроцедуры
    
    
    
    Хотя еще нужно смотреть как вставить в список страну.
  4. TopicStarter Overlay
    RuslanBLR
    Offline

    RuslanBLR Опытный в 1С

    Регистрация:
    13 июл 2010
    Сообщения:
    68
    Симпатии:
    0
    Баллы:
    26
    Я так понимаю что переменная должна быть введена одинаковая что в самой Процедуре, что в в параметре макета?
    И еще у меня как я уже говорил 2 процедуры: они одинаковые
    1/Справочник Номенклатура:ФормаСписка
    2/Справочник Номенклатура: ФормаЭлемента
    В какую из них добовлять ТаблицуДанных?
  5. alexburn
    Offline

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

    Регистрация:
    5 янв 2009
    Сообщения:
    14.782
    Симпатии:
    509
    Баллы:
    204
    я бы немного изменил процедуру НапечататьЦенники.
  6. TopicStarter Overlay
    RuslanBLR
    Offline

    RuslanBLR Опытный в 1С

    Регистрация:
    13 июл 2010
    Сообщения:
    68
    Симпатии:
    0
    Баллы:
    26
    А чем эта плоха?
  7. alexburn
    Offline

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

    Регистрация:
    5 янв 2009
    Сообщения:
    14.782
    Симпатии:
    509
    Баллы:
    204
    Найди процедуру НапечататьЦенники(), в нее передаются все параметры, в этой же процедуре можно и добавить страну.

    понимаете, данные у вас берутся из списка, вот отсюда
    Товар = ЭлементыФормы.Список.ТекущиеДанные.Ссылка;
    Вы можете добавить в эту ТЗ страну?

    Приведите листинг процедуры ПечататьЦенники, и я вам помогу.
  8. TopicStarter Overlay
    RuslanBLR
    Offline

    RuslanBLR Опытный в 1С

    Регистрация:
    13 июл 2010
    Сообщения:
    68
    Симпатии:
    0
    Баллы:
    26
    функцию или процедуру?
  9. alexburn
    Offline

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

    Регистрация:
    5 янв 2009
    Сообщения:
    14.782
    Симпатии:
    509
    Баллы:
    204
    Функцию, это же из кода видно:) Она находится в общих модулях->работа с диалогами.
  10. TopicStarter Overlay
    RuslanBLR
    Offline

    RuslanBLR Опытный в 1С

    Регистрация:
    13 июл 2010
    Сообщения:
    68
    Симпатии:
    0
    Баллы:
    26
    Код:
    Процедура НапечататьЦенникИзОбработки(МассивСсылок)
    
    ОбработкаПечатьЦенников = Обработки.ПечатьЦенников.Создать();
    
    Для Каждого Ссылка Из МассивСсылок Цикл
    НоваяСтрока = ОбработкаПечатьЦенников.Товары.Добавить();
    НоваяСтрока.Номенклатура = Ссылка;
    НоваяСтрока.Количество = 1;
    НоваяСтрока.ЕдиницаИзмерения = Ссылка.ЕдиницаХраненияОстатков;
    НоваяСтрока.Печать = Истина;
    КонецЦикла;
    
    СтруктураПараметров = Новый Структура;
    СтруктураПараметров.Вставить("ЗаполнитьЦены", Истина);
    ФормаПечатьЦенников = ОбработкаПечатьЦенников.ПолучитьФорму("Форма");
    ФормаПечатьЦенников.Параметр = СтруктураПараметров;
    ФормаПечатьЦенников.Открыть();
    
    КонецПроцедуры
    
    
    
    Функция НапечататьЦенники(Данные) Экспорт
    
    ТабДокумент                     = Новый ТабличныйДокумент;
    ТабДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_Ценник";
    Макет                           = ПолучитьОбщийМакет("Ценник");
    ОбластьЦенника                  = Макет.ПолучитьОбласть("Строка|Столбец");
    
    Если ТипЗнч(Данные) <> Тип("Структура") Тогда
    Возврат Неопределено;
    КонецЕсли;
    
    Организация   = Неопределено;
    ТаблицаДанных = Неопределено; 
    ДатаПечати    = Неопределено;
    Если НЕ Данные.Свойство("Организация",   Организация) Тогда
    Возврат Неопределено;
    КонецЕсли;
    Если НЕ Данные.Свойство("ТаблицаДанных", ТаблицаДанных) Тогда 
    Возврат Неопределено;
    КонецЕсли;
    Данные.Свойство("ДатаПечати", ДатаПечати);
    
    ТекСтолбец = 0;
    ТекСтрока  = 0;
    
    Для Каждого СтрокаТаблицы Из ТаблицаДанных Цикл
    
    ОбластьЦенника.Параметры.Заполнить(СтрокаТаблицы);
    ОбластьЦенника.Параметры.Цена        = ОбщегоНазначения.ФорматСумм(СтрокаТаблицы.Цена, СтрокаТаблицы.Валюта, "00");
    ОбластьЦенника.Параметры.ДатаПечати  = ДатаПечати;
    ОбластьЦенника.Параметры.Организация = Организация;
    ОбластьЦенника.Параметры.ОрганизацияНаименование = Организация.Наименование;
    
    Если ТекСтолбец = 0 Тогда
    ТабДокумент.Вывести(ОбластьЦенника);
    Иначе
    ТабДокумент.Присоединить(ОбластьЦенника);
    КонецЕсли;
    
    ТекСтолбец = ТекСтолбец + 1;
    
    Если ТекСтолбец = 5 Тогда
    ТекСтрока  = ТекСтрока + 1;
    ТекСтолбец = 0;
    КонецЕсли;
    
    Если ТекСтрока = 3 Тогда
    ТекСтрока = 0;
    ТабДокумент.ВывестиГоризонтальныйРазделительСтраниц();
    КонецЕсли;
    
    КонецЦикла;
    
    Возврат ТабДокумент;
    
    КонецФункции // НапечататьЦенники()
    
  11. alexburn
    Offline

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

    Регистрация:
    5 янв 2009
    Сообщения:
    14.782
    Симпатии:
    509
    Баллы:
    204
    Вот, то что нужно. Теперь открываете общий макет "Ценник", вставляете область куда нужно, даете имя, например, "СтранаПроисхождения". Вставляете параметр "Страна".
    Теперь в функцию ПечататьЦенники, в цикл, там где у вас "ОбластьЦенника.Параметры.Заполнить(СтрокаТаблицы);" вставляете ниже:
    Код:
    ОбластьСтрана.Параметры.Страна = СтрокаТаблицы.Номенклатура.СтранаПроисхождения;
    
    (Это реквизит справочника Номенклатура, где вы пишете страну).

    А перед циклом инициализируете область:
    Код:
    ОбластьСтрана = Макет.ПолучитьОбласть("СтранаПроисхождения");
    
  12. TopicStarter Overlay
    RuslanBLR
    Offline

    RuslanBLR Опытный в 1С

    Регистрация:
    13 июл 2010
    Сообщения:
    68
    Симпатии:
    0
    Баллы:
    26
    Если я в общий макет "Ценник" пишу в поле СтранаПроисхождения и при вносе в параметр Страна, то автоматом в макете изменяет СтранаПроисхождения на Страна. Поле парамерт - это вроде и есть имя. А свойствах - имя - указаны R7C3:R7C4.
  13. alexburn
    Offline

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

    Регистрация:
    5 янв 2009
    Сообщения:
    14.782
    Симпатии:
    509
    Баллы:
    204
    покажите скрин макета, я вам нарисую:)

    R7C3:R7C4-это диапазон.
  14. TopicStarter Overlay
    RuslanBLR
    Offline

    RuslanBLR Опытный в 1С

    Регистрация:
    13 июл 2010
    Сообщения:
    68
    Симпатии:
    0
    Баллы:
    26
    Извините нет проги для скринов. В docx забросил

    Вложения:

    • 1.doc
      Размер файла:
      87 КБ
      Просмотров:
      12
  15. TopicStarter Overlay
    RuslanBLR
    Offline

    RuslanBLR Опытный в 1С

    Регистрация:
    13 июл 2010
    Сообщения:
    68
    Симпатии:
    0
    Баллы:
    26
    Код:
    Функция НапечататьЦенники(Данные) Экспорт
    
    ТабДокумент                     = Новый ТабличныйДокумент;
    ТабДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_Ценник";
    Макет                           = ПолучитьОбщийМакет("Ценник");
    ОбластьЦенника                  = Макет.ПолучитьОбласть("Строка|Столбец");
    
    Если ТипЗнч(Данные) <> Тип("Структура") Тогда
    Возврат Неопределено;
    КонецЕсли;
    
    Организация   = Неопределено;
    ТаблицаДанных = Неопределено; 
    ДатаПечати    = Неопределено;
    Если НЕ Данные.Свойство("Организация",   Организация) Тогда
    Возврат Неопределено;
    КонецЕсли;
    Если НЕ Данные.Свойство("ТаблицаДанных", ТаблицаДанных) Тогда 
    Возврат Неопределено;
    КонецЕсли;
    Данные.Свойство("ДатаПечати", ДатаПечати);
    
    ТекСтолбец = 0;
    ТекСтрока  = 0;
    
    ОбластьСтрана = Макет.ПолучитьОбласть ("СтранаПроисхождения"); [color=#FF0000]/////// добавил
    
    Для Каждого СтрокаТаблицы Из ТаблицаДанных Цикл
    
    ОбластьЦенника.Параметры.Заполнить(СтрокаТаблицы);
    ОбластьСтрана.Параметры.Страна = СтранаТаблицы.Номенклатура.СтранаПроисхождения; [color=#FF0000]/////// добавил
    ОбластьЦенника.Параметры.Цена        = ОбщегоНазначения.ФорматСумм(СтрокаТаблицы.Цена, СтрокаТаблицы.Валюта, "00");
    ОбластьЦенника.Параметры.ДатаПечати  = ДатаПечати;
    ОбластьЦенника.Параметры.Организация = Организация;
    ОбластьЦенника.Параметры.ОрганизацияНаименование = Организация.Наименование;
    
    Если ТекСтолбец = 0 Тогда
    ТабДокумент.Вывести(ОбластьЦенника);
    Иначе
    ТабДокумент.Присоединить(ОбластьЦенника);
    КонецЕсли;
    
    ТекСтолбец = ТекСтолбец + 1;
    
    Если ТекСтолбец = 5 Тогда
    ТекСтрока  = ТекСтрока + 1;
    ТекСтолбец = 0;
    КонецЕсли;
    
    Если ТекСтрока = 3 Тогда
    ТекСтрока = 0;
    ТабДокумент.ВывестиГоризонтальныйРазделительСтраниц();
    КонецЕсли;
    
    КонецЦикла;
    
    Возврат ТабДокумент;
    
    КонецФункции // НапечататьЦенники()
    


    Все правильно?
  16. alexburn
    Offline

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

    Регистрация:
    5 янв 2009
    Сообщения:
    14.782
    Симпатии:
    509
    Баллы:
    204
    Тогда проще, вставляете в цикле где увас ОбластьЦенника.Параметры.ОрганизацияНаименование = Организация.Наименование; следующей строчкой:
    Код:
    ОбластьЦенника.Параметры.СтранаПроисхождения = СтрокаТаблицы.Номенклатура.СтранаПроисхождения;
    
    
    И все:), должно работать.

    Добавить нужно всего одну строчку, смотри.
  17. TopicStarter Overlay
    RuslanBLR
    Offline

    RuslanBLR Опытный в 1С

    Регистрация:
    13 июл 2010
    Сообщения:
    68
    Симпатии:
    0
    Баллы:
    26
    остальное все убрать?
    Код:
    ОбластьСтрана.Параметры.Страна = СтрокаТаблицы.Номенклатура.СтранаПроисхождения;
    
    ОбластьСтрана = Макет.ПолучитьОбласть("СтранаПроисхождения");
    
  18. alexburn
    Offline

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

    Регистрация:
    5 янв 2009
    Сообщения:
    14.782
    Симпатии:
    509
    Баллы:
    204
    Да, эти две строчки нужно убрать. Кстати, первая строка неправильная.
  19. TopicStarter Overlay
    RuslanBLR
    Offline

    RuslanBLR Опытный в 1С

    Регистрация:
    13 июл 2010
    Сообщения:
    68
    Симпатии:
    0
    Баллы:
    26
    Огромное спасибо, за терпение и помощь!!!!!!!!!!!!!!!!!!!
  20. alexburn
    Offline

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

    Регистрация:
    5 янв 2009
    Сообщения:
    14.782
    Симпатии:
    509
    Баллы:
    204
    Заработало?

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