Кафедра: Автоматика и Информационные Технологии
Системы программирования
Введение
В стандарте специальности ВМКСС задачи профессиональной деятельности определены следующим образом: инженер должен быть подготовлен к решению следующих профессиональных задач.
Проектно-конструкторская деятельность:
определение целей проектирования объектов профессиональной деятельности, критериев эффективности проектных решений, ограничений;
проектирование архитектуры аппаратно-программных комплексов и их компонентов;
выбор средств вычислительной техники (ВТ), средств программирования и их применения для эффективной реализации аппаратно-программных комплексов;
проектирование технического обеспечения вычислительных систем (ВС) и автоматизированных систем на основе современных методов, средств и технологий проектирования, в том числе с использованием систем автоматизированного проектирования;
оценка надежности и качества функционирования объекта проектирования;
Квалификационные требования.
- Подготовка выпускника должна обеспечивать квалификационные умения для решения профессиональных задач:
- участие во всех фазах проектирования, разработки, изготовления и сопровождения объектов профессиональной деятельности;
- участие в разработке всех видов документации на программные, аппаратные и программно-аппаратные комплексы;
- использование современных методов, средств и технологии разработки объектов профессиональной деятельности.
Инженер должен знать
- технологию проектирования, производства и сопровождения объектов профессиональной деятельности;
Целью выполнения лабораторных работ является знакомство с современными инструментариями проектирования и последующего обслуживания информационных систем.
1. Знакомство с визуальными средствами разработки. Быстрая разработка приложений. Использование конструкторов
1.1 Введение
1С: Предприятие – это специализированная объектно-ориентированная система управления базами данных (СУБД), предназначенная для автоматизации деятельности предприятия. Типичными задачами для автоматизации являются: кадровый учет, расчет зарплаты, бухгалтерский учет, складской учет и т.д.
1С: Предприятие использует объектно-ориентированный подход к разработке программ. Такой подход ускоряет и упрощает разработку в десятки раз. Система 1С: Предприятие предоставляет в распоряжение разработчику широкий набор объектов, на основе которых и создаются все прикладные решения. К ним относятся справочники, документы, регистры и т.д.
1С: Предприятие состоит из
- технологической платформы, включающей в себя конфигуратор, отладчик, встроенный программный язык, редактор таблиц, текстовый редактор и систему управления базой данных;
- набора прикладных компонент, основные компоненты – оперативный учет, бухгалтерский учет и расчеты;
- конфигурации (настройки).
Программа 1С-Предприятие защищена аппаратным ключом, вставляемым в порт принтера или USB‑порт. Перед запуском системы «1С: Предприятие» необходимо установить драйвер защиты. При использовании сетевой версии на компьютере, к которому присоединен аппаратный ключ, устанавливается сервер защиты. Способ установки сервера зависит от используемой операционной системы и описан в руководстве по инсталляции программы.
1.2 Среда
разработки
1.2.1 Подготовка к работе системы
Для работы с программным комплексом 1С: Предприятие необходим IBM – совместимый персональный компьютер с процессором I486 (рекомендуется Pentium) и операционной системой Windows 2.2.1 (рекомендуется Windows 95,98, NT, 2000).
Для начала работы с программным пакетом необходимо загрузить систему, установить 1С: Предприятие, если это не было сделано ранее. Затем при помощи «проводника» (для Windows 95, 98, NT, 2000, XP) открыть рабочий каталог, в котором установлен пакет, и запустить исполняемый файл 1cv77.exe.
1.2.2 Возможности системы
1С-Предприятие является гибкой настраиваемой системой для решения широкого круга задач в сфере автоматизации деятельности предприятий.
Целью данной лабораторной работы является ознакомление с правилами и методами работы в системе 1С: Предприятие, изучение базовых объектов системы, объектов компоненты «Оперативный учет» и встроенного языка программирования.
1.2.3 Запуск системы
Пакет 1С: Предприятие запускается как любое другое приложение с помощью иконки в START MENU.
При запуске системы 1С: Предприятие появляется диалоговая форма, в которой производится выбор информационной базы и режима работы («Предприятие», «Конфигуратор», «Отладчик», «Монитор»).
Первый запуск всегда производится в монопольном режиме, т. к. происходит создание индексных файлов.
Для того, чтобы создать новую (пустую) конфигурацию, необходимо выбрать режим «Конфигуратор», нажать кнопку «Добавить» и выбрать (или создать новый) каталог, в котором будет находиться информационная база.
Горизонтальное меню в режиме конфигуратора:
- Файл – организация работы с файлами. С помощью этого раздела меню пользователь может создать или открыть текстовый файл, таблицу или внешний отчет 1С: Предприятия.
- Конфигурация – с помощью этого раздела пользователь осуществляет редактирование и работу с конфигурацией. Опции раздела позволяют открыть конфигурацию для редактирования, загрузить измененную или объединить конфигурации, выполнить полный синтаксический контроль, получить описание структуры метаданных.
- Конструкторы – раздел, позволяющий добавлять новые объекты конфигурации с помощью мастера и подсказок.
- Администрирование – раздел служит для управления списком пользователей системы, проведения таких процедур как сохранение и восстановление данных, тестирования базы данных, настройки журнала регистрации, управления распределенной базой данных.
- Сервис – раздел содержит различные вспомогательные функции – настройку интерфейса системы, синтакс-помощник, запуск системы в других режимах (пользовательском, отладчике, мониторе) и др.
- Окна – раздел предназначен для настройки окон при работе с конфигурацией.
- Help – раздел служит для доступа к справочной системе.
Лабораторная работа преследует ознакомительные цели. Пользователю необходимо усвоить принципы и методы создания и изменения конфигурации, изучить встроенный язык программирования.
1.3
Работа с информационной базой
1.3.1 Запуск конфигурации
Открыть конфигурацию можно через меню «Конфигурация / Открыть конфигурацию». Соответствующий файл конфигурации имеет имя «1cv7.md». Окно конфигурации состоит из трех закладок: «Метаданные», «Интерфейсы» и «Права».
Метаданные – это данные о данных, т.е.
• информация о структуре информационных баз данных: справочников, документов и т.д.;
• формы диалогов и списков;
• таблицы отчетов;
• программные модули, в которых на встроенном языке описываются алгоритмы функционирования системы.
В закладке «интерфейсы» происходит создание и настройка интерфейсов пользователей. Интерфейс состоит из двух частей: меню и инструментальные панели. У интерфейса может быть подчиненный интерфейс, который получается из родительского интерфейса перечислением доступных пунктов меню и кнопок.
В закладке «права» задаются наборы прав доступа к информационным объектам, определенным в закладке «метаданные».
1.3.2 Обслуживание информационной базы и управление списком пользователей
Ввод пользователей системы производится в конфигураторе в меню «Администрирование / Пользователи». У каждого пользователя задается набор прав, интерфейс и пароль (по умолчанию пароля нет).
Сохранение, загрузка и тестирование информационной базы осуществляется в меню «Администрирование». При сохранении выполняется сжатие баз данных и файла конфигурации в архив с расширением «zip». При восстановлении данных происходит обратная операция, – из файла архива происходит распаковка баз данных и файла конфигурации.
Сохранение и восстановление производят с целью создания резервных копий и для переноса данных с одного компьютера на другой (целиком).
Тестирование и исправление информационных баз производится в случае, когда имеются ошибки в базах данных, связанные, как правило, с системными сбоями (выключение питания, зависание программы и т.д.)
Для загрузки конфигурации (настройки) применяется два способа – «Загрузка измененной конфигурации» и «Объединение конфигураций».
• Первый способ «Загрузка измененной конфигурации» применяется, если последующая конфигурация является потомком изменяемой конфигурации. Последнее означает, что за данная конфигурация была скопирована, изменена в другом месте и загружена обратно. Если же после копирования обе конфигурации подверглись изменениям (даже несущественным), то при попытке загрузить другую конфигурацию система выдаст ошибку «Выбранный файл конфигурации не является потомком данного файла. При реструктуризации может произойти разрушение данных». Продолжайте загрузку, только если абсолютно уверены, что изменения, сделанные в текущей конфигурации после копирования являются несуществеными и могут быть потеряны.
• Второй способ «Объединение конфигураций» применяется, если требуется объединить две разные конфигурации (когда-то бывшие одной). При этом можно отдать приоритет либо текущей, либо загружаемой конфигурации и выбрать режим замещения или объединения объектов. В режиме замещения объект приоритетной конфигурации замещает объект с таким же именем другой конфигурации. В режиме объединения система пытается объединить два объекта с одинаковым именем. При объединении конфигураций, можно флажками отметить какие объекты требуется объединить.
1.4 Лабораторная работа №1
1.4.1 Цель лабораторной работы
1. Научиться управлять списком информационных баз.
2. Научиться работать с конфигурацией – загружать и сохранять настройку.
3. Научиться настраивать права и интерфейсы пользователей.
4. Научиться управлять списком пользователей.
5. Научиться сохранять, восстанавливать и тестировать информационную базу.
1.4.2 Задание на лабораторную работу
1. Создать новую информационную базу данных в новом каталоге.
2. Загрузить измененную конфигурацию из конфигурации «Торговля и Склад».
3. Создать в конфигурации новый интерфейс – «ИнтерфейсКассира». Пользователь с таким интерфейсом может вводить приходные и расходные кассовые документы, авансовые отчеты и просматривать список кассовых документов. Настроить панель инструментов и меню.
4. Создать в конфигурации новый набор прав «ПраваКассира». Пользователь с такими правами может вводить новые кассовые документы, но не может изменять уже проведенные кассовые документы.
5. Завести в конфигураторе двух новых пользователей системы (один кассир, другой – администратор), задать им пароли, роли и интерфейсы.
6. Открыть конфигурацию. Задать имя конфигурации, ввести авторов и пароль на конфигурацию.
7. Сохранить, восстановить и протестировать информационную базу данных.
2. Знакомство с объектно-ориентированным языком программирования. Агрегатные типы данных
2.1
Объекты метаданных
После открытия конфигурации через меню «Действия» можно получить доступ к глобальному модулю и общим таблицам. Глобальный модуль содержит описание процедур и функций, а общие таблицы – шаблоны печатных форм, доступных в любом месте конфигурации.
На закладке «Метаданные» доступны для конфигурирования (настройки) объекты метаданных:
- константы – средство работы с постоянными (или условно постоянными) значениями,
- справочники – средство для ведения списков однородных элементов данных. Помимо наименования элементов данных, списки могут содержать различную дополнительную информацию (реквизиты справочника),
- документы – средство для ввода первичной информации о совершаемых хозяйственных операциях. Документы содержат различную информацию, которая характеризует совершаемую операцию (реквизиты шапки и реквизиты табличной части документа),
- журналы документов – средство для просмотра списка документов,
- перечисления – средство работы с элементами данных, список возможных значений которых жестко задан. В отличие от справочников, списки значений в перечислении задаются в процессе их создания в конфигураторе и при выполнении задачи не могут быть изменены,
- отчеты и обработки – отчеты предназначены для вывода информации из базы данных, обработки – для обработки данных,
- регистры оперативного учета – для организации доступа к оперативным итогам в различных разрезах, за различные периоды и с разной степенью детализации. При наличии в системе 1С: Предприятие компоненты «Оперативный учет» система автоматически реализует специальный механизм работы с регистрами.
- другие объекты метаданных.
Доступ к свойствам каждого объекта производится через меню «ДействияСвойства» или через контекстное меню, вызываемое щелчком левой кнопки мыши. В свойствах самой конфигурации можно задать ее идентификатор, язык интерфейса, пароль, информацию об авторе, заставку.
Справочники, документы, журналы документов, отчеты и обработки содержат экранные формы для работы пользователей с этими объектами. Формы состоят из:
- диалога – это тот диалог, который пользователь видит на экране. В диалоге пользователь просматривает список документов или элементов справочника, заполняет или корректирует документы или элементы справочника, задает параметры формирования отчета.
- модуля – модуль содержит процедуры и функции, описывающие поведение экранной формы. Это могут быть предопределенные процедуры, выполняющиеся при наступлении некоторого события (обработчики событий), процедуры, вызываемые из элементов диалога, прочие процедуры и функции.
- таблиц – в таблице настраивается шаблон печатной формы, если предполагается вывод какой-либо информации на печать.
2.2
Встроенный язык программирования
Программные модули в конфигурации не являются самостоятельными программами, поскольку являются частью всей конфигурации задачи. Программный модуль – это «контейнер» для размещения текстов процедур и функций, вызываемых системой во время исполнения в определенные моменты времени.
Место размещения конкретного программного модуля предоставляется конфигуратором в тех точках конфигурации задачи, которые требуют описания специфических алгоритмов функционирования. Каждый отдельный модуль воспринимается системой как единое целое, поэтому все процедуры и функции программного модуля выполняются в одном контексте.
Текст программного модуля состоит из операторов и комментариев. Комментарии начинаются с символов « // ». Оператор имеет формат: [~метка:] Оператор [(Параметры)] [ДобавочноеКлючевоеСлово].
Программный модуль содержит:
· Раздел определения переменных
· Раздел процедур и функций
· Раздел основной программы
Синтаксис описания процедур и функций программного модуля:
Процедура <Имя_проц>([Знач] <Парам1> [=<ДефЗнач>], …) [Экспорт]
// Объявления локальных переменных;
// Операторы;
[Возврат;]
// Операторы;
КонецПроцедуры
Ключевое слово «Знач» означает, что переменные передаются по значению. Ключевое слово «Экспорт» имеет смысл только в глобальном модуле и означает, что процедура будет доступна в любом программном модуле. Функция, в отличие от процедуры должна возвращать значение
Для передачи локального контекста используется ключевое слово «Контекст» в качестве параметра.
2.3 Типы
данных
В системе поддерживаются базовые и агрегатные типы данных. К базовым типам относятся числа, строки и даты. Агрегатные типы данных – это специализированные типы данных, предназначенные для работы с объектами 1С: Предприятия. Агрегатными типами данных называются следующие типы данных:
- Константа
- Справочник
- Перечисление
- Документ
- Запрос
- Текст
- Таблица
- СписокЗначений
- ТаблицаЗначений
- Периодический
И другие типы данных. Каждый агрегатный тип данных, как правило, имеет набор атрибутов и методов. Атрибуты по свойствам напоминают переменные, т.е. им можно присваивать или читать их значения. Методы – это те действия, которые может выполнять агрегатный тип данных. Методы могут иметь или не иметь возвращаемое значение.
Типичная последовательность работы с объектом агрегатного типа данных выглядит следующим образом:
1. С помощью функции СоздатьОбъект создается объект агрегатного типа данных, и какой-либо переменной присваивается;
2. Объект позиционируется на нужном элементе данных;
3. Производятся различные манипуляции с объектом агрегатного типа данных через вызовы методов и обращения к его атрибутам.
4. В случае, если объект агрегатного типа данных больше не нужен, он может быть отсоединен от переменной посредством переприсваивания переменной какого-либо значения базового типа (например, числа 0).
Пример:
Сотр = СоздатьОбъект («Справочник. Сотрудники»);
Сотр. НайтиПоНаименованию («Петров»);
Если Сотр. Выбран()=1 Тогда
Сообщить («Петров»+Строка (Сотр. Оклад));
Иначе
Сообщить («Петров не найден»);
КонецЕсли;
2.4 Работа с
объектом «СписокЗначений»
Объект «СписокЗначений» применяется для создания динамических списков, которые могут отображаться в диалоговых формах (элемент «Список» и «Поле со списком») для выбора одного или нескольких значений из списка. Список создается с помощью функции СоздатьОбъект («СписокЗначений»), либо визуально при добавлении на форму элементов «Список» или «Поле со списком».
Основные функции работы со списком следующие:
• ДобавитьЗначение (<Знач>,<Строка>)
• ПолучитьЗначение (<Позиция>,<Перем>)
• УдалитьЗначение (<Позиция>,<Колич>)
• УдалитьВсе()
• РазмерСписка()
• Сортировать (<Направление>)
• Пометка (<Позиция>,<Отметка >)
2.5 Работа с
объектом «ТаблицаЗначений»
Объект «ТаблицаЗначений» применяется для создания динамических массивов, которые могут отображаться в диалоговых формах (элемент «Таблица значений»). Таблица значений создается с помощью функции СоздатьОбъект («ТаблицаЗначений»), либо визуально при добавлении на форму элементов «Таблица значений».
Пример.
Т=СоздатьОбъект («ТаблицаЗначений»)
Т. НоваяКолонка («Товар», «Строка», 30, «Наименование товара», 20);
Т. НоваяКолонка («Цена», «Число», 10, 2, «Цена», 10);
Т. НоваяКолонка («Количество», «Число», 10, 3, «Кол.», 10);
Т. НоваяКолонка («Сумма», «Число», 15, 3, «Сумма», 10);
Т. НоваяСтрока();
Т. Товар= «Сыр»;
Т. Цена= 50;
Т. Количество= 10;
Т. Сумма= Т. Цена* Т. Количество;
Основные функции работы с таблице следующие:
• НоваяКолонка (<Идентификатор>, <Тип>, <Длина>, <Точность>, <Заголовок>,<Ширина>,<Формат>,<Положение>)
•НоваяСтрока()
•УдалитьСтроку (<НомерСтроки>)
•УдалитьСтроки()
•ПолучитьЗначение (<НомерСтроки>,<Колонка>),
•НайтиЗначение (<Знач>,<Строка>,<Колонка>),
•ВыбратьСтроки() – открыть выборку строк из таблицы
•ПолучитьСтроку() – получить следующую строку из выборки
•Сортировать (<Колонки>)
•Свернуть (<ГрупКолонки>,<СумКолонки>) <ГрупКолонки> – это строка, содержащая список идентификаторов или номеров колонок, разделенных запятой, по которым выполняется группировка строк таблицы значений (то есть если имеется несколько строк с одинаковыми значениями в группируемых колонках, то в результате свертки останется одна такая строка). <СумКолонки> – это строка, содержащая список идентификаторов или номеров колонок, разделенных запятой, в которых выполняется суммирование значений строк таблицы значений (то есть, если группируется несколько строк, то значения суммируемых колонок будут складываться).
2.6 Запуск внешних
приложений
Для запуска внешнего приложения можно использовать функцию ЗапуститьПриложение().
Для запуска и управления внешним приложением можно использовать механизм OLE-Automation.
Пример.
Окно = СоздатьОбъект («Excel. Application»);
Окно. Workbooks. Add();
Для Н=1 По 10 Цикл
Ячейка = Окно. Cells (Н, 1);
Ячейка. Value = Н;
КонецЦикла;
Окно. Caption = «Отчет»;
Окно. Visible = 1;
2.7 Лабораторная работа
№2
2.7.1 Цель лабораторной работы
1. Научится создавать простейшие программы в глобальном модуле и внешнем отчете.
2. Научиться пользоваться инструментальными средствами: синтаксический контроль, отладчик, синтакс-помощник.
3. Научиться пользоватьcя локальными и глобальными переменными.
4. Научиться пользоваться объектами агрегатного типа данных, обращаться к их атрибутам и методам – на примере объекта «ТаблицаЗначений»
5. Научиться пользоватьcя механизмом OLE Automation.
2.7.2 Задание на лабораторную работу
1. В глобальном модуле написать программу «Здравствуй мир»
2. Создать внешний отчет «ВызовВнешнихПроцедур»
3. Добавить в форму диалога кнопку «Открыть Excel». При нажатии этой кнопки вызывать Excel. Используя конструкцию «Попытка…», выдавать сообщение «Excel не доступен» при неудачной попытке открытия внешней программы.
4. Добавить в форму диалога кнопку «Открыть Word». При нажатии этой кнопки вызывать Word.
5. Вставить внешний отчет «ВызовВнешнихПроцедур» в конфигурацию.
6. Добавить кнопку на панель инструментов, для функции вызова отчета «ВызовВнешнихПроцедур».
7. Создать внешний отчет «РасчетСумм»
8. В отчете «РасчетСумм» добавить в форму диалога таблицу значений с колонками «Товар», «Количество», «Цена», «Сумма» и кнопки «Добавить строку», «Удалить строку», «Свернуть по товарам». Последняя кнопка должна суммировать по товарам сумму и количество. Средняя цена должна вычисляться автоматически.
3. Создание форм, обработчики событий формы
3.1 Объект «Справочник» и его свойства
Справочник – это агрегатный тип данных, средство для работы со списками однородных элементов данных. Название и структура каждого конкретного справочника определяются при его создании в конфигураторе.
У любого справочника существуют два реквизита, которые создаются автоматически – Код и Наименование. Система 1С: Предприятие предоставляет широкие возможности по работе с кодами элементов справочника: автоматическое присвоение кодов, автоматический контроль уникальности кода и другие.
Помимо кода и наименования, в справочниках системы 1С: Предприятие может храниться любая дополнительная информация об элементе справочника. Для хранения такой информации в справочнике может быть создан список реквизитов. Свойства справочника редактируются в окне редактирования «Справочник». Для визуального представления справочника существуют «Форма элемента», «Форма группы» и «Формы списка» (их может быть несколько).
3.1.1 Периодические реквизиты
Реквизиты справочников могут быть периодическими, т.е. иметь значения, связанные с датой. При изменении значения периодического реквизита старое значение сохраняется, при этом новое значение начинает действовать с указанной даты, старое – до указанной даты.
К периодическому реквизиту можно обращаться при помощи встроенного языка системы 1С: Предприятие – получать и записывать значение реквизита на указываемую дату.
В режиме использования конфигурации для периодического реквизита можно вызвать окно «История». Окно «История» позволяет редактировать историю изменений значения реквизита напрямую: вводить новые строки, редактировать или удалять существующие.
Методы периодических реквизитов
Катег = СпрСотр. Категория. Получить(НекаяДата);
СпрСотр. Категория. Установить (НекаяДата, НоваяКатегория);
Установка даты выборки периодических реквизитов
СпрСотр. ИспользоватьДату(НекаяДата);
Катег = СпрСотр. Категория;
СпрСотр. Оклад = 6000;
Проведение документов
При проведении документа часто требуется установить новое значение периодического реквизита на определенную дату. Это называется движение документа. В этом случае следует применять метод УстановитьРеквизитСправочника:
Пример:
Процедура ОбработкаПроведения()
УстановитьРеквизитСправочника (Сотрудник, «Должность», НоваяДолжность, ДатаПеремещения);
КонецПроцедуры
Объект «Периодический»
Для работы с историей периодического реквизита очень удобно использовать объект «Периодический».
Пример: вывести историю карьеры сотрудника за текущий год:
ИсторияКарьеры = СоздатьОбъект («Периодический»);
ИсторияКарьеры. ИспользоватьОбъект («Должность», ВыбрСотрудник);
ИсторияКарьеры. ВыбратьЗначения (НачГода(РабочаяДата(), КонГода (РабочаяДата()));
Пока ИсторияКарьеры. ПолучитьЗначение()=1 Цикл
Сообщить (Строка(ИсторияКарьеры. ДатаЗнач)+» «+ Строка (ИсторияКарьеры. Значение));
КонецЦикла;
3.1.2 Иерархические справочники
Справочник может иметь иерархическую структуру. Число уровней иерархии определяется в поле «Кол-во уровней» в окне редактирования. Для задания иерархии используется реквизит «Родитель», который и определяет, к какой группе относится элемент. Наиболее важные функции:
• ЭтоГруппа();
• ПринадлежитГруппе (<Группа>);
• Уровень();
Глубина вложенности групп настраивается в конфигураторе и не может превышать 10 уровней.
Использование многоуровневых справочников позволяет организовать ввод информации в справочник с нужной степенью детализации. Элементы и группы элементов в многоуровневом справочнике можно переносить из одной группы в другую.
3.1.3 Подчиненные справочники
Любой справочник может использоваться как сам по себе, так и быть подчиненным какому-либо другому справочнику. Например, справочник договоров может использоваться отдельно, а может быть связан со справочником организаций. Чтобы подчинить справочник какому-либо из справочников, уже существующих в системе, в поле «Подчинен» следует выбрать наименование этого справочника. Такой справочник в системе 1С: Предприятие называется владельцем. В терминах реляционных баз данных, между таблицами устанавливается связь «один-ко-многим». В этом случае каждый элемент подчиненного справочника будет связан с одним из элементов справочника-владельца.
В отличие от многоуровневого справочника, в котором все элементы имеют одинаковую структуру, использование механизма подчиненных справочников позволяет связать элементы разной структуры. В этом случае каждый элемент подчиненного справочника будет связан с одним из элементов справочника-владельца.
Установка текущего владельца
СпрДоговоры = СоздатьОбъект («Справочник. Договоры»);
СпрДоговоры. ИспользоватьВладельца(ВыбрКонтрагент);
СпрДоговоры. ВыбратьЭлементы();
3.1.4 Обработка элементов справочника
Обычно для обработки элементов справочника используется следующая последовательность ко
Спр=СоздатьОбъект («Справочник. НазваниеСправочника»);
Спр. ИспользоватьДату (<Дата>);
// Используется, если есть периодические реквизиты
Спр. ИспользоватьВладельца (<Владелец>);
// Используется, если нужно выбрать только элементы, // подчиненные владельцу
Спр. ИспользоватьРодителя (<Группа>);
// Используется, если нужно выбрать
// только элементы, принадлежащие Группе
Спр. ВыбратьЭлементы();
Пока Спр. ПолучитьЭлемент()=1 Цикл
Сообщить (Спр. Код+» «+Спр. Наименование);
КонецЦикла;
3.1.5 Экранные формы справочников
Форма списка справочника
Для удобства работы пользователей со справочником на этапе конфигурирования можно создать несколько видов экранных форм для показа справочника. В зависимости от контекста вызова справочника можно задать использование определенного диалога для работы с ним.
Модуль формы списка содержит процедуры и функции, которые действуют в контексте данной формы (в контексте объекта Справочник).
Предопределенные процедуры вызываются системой 1С при наступлении определенных событий. Предопределенные процедуры вызываются системой 1С при наступлении определенных событий, поэтому они являются обработчиками событий.
Предопределенные процедуры формы списка справочника
ПриОткрытии()
ПриЗакрытии()
ПриЗаписи()
ПриВыбореРодителя(НовРодитель)
ПриВыбореВладельца(НовВладелец)
ПриУстановкеОтбора (Реквизит, Значение)
В форме списка справочника элементы могут быть отсортированы в различном порядке: по коду, по наименованию или по любому реквизиту, у которого в Конфигураторе установлен флажок Сортировка. Задать тип сортировки можно программно методом Сортировка (Способ, ФлагРазрешенияИзменения)
В форме списка справочника элементы могут быть отфильтрованы, т.е. пользователю будут показаны только нужные элементы. Программно установить отбор можно методом УстановитьОтбор (Реквизит, Значение). Для этого у реквизита должен быть установлен флажок «Отбор по реквизиту» в Конфигураторе.
Форма элемента и форма группы
Если справочник имеет сложную структуру, тогда его элементы удобнее редактировать в отдельном окне, а не в списке.
В форме элемента справочника также есть предопределенные процедуры (события):
Предопределенные процедуры формы элемента справочника
ПриОткрытии()
ПриЗакрытии()
ПриЗаписи()
ВводНового()
Подбор из справочника
Функция подбора позволяет выбирать несколько значений из справочника или другого объекта, не закрывая его.
Для организации подбора используется функция
ОткрытьПодбор (<Объект>,<ИмяФормы>,<КонтекстФормы>,<ФлагМножВыбора>,<ТекЗнач>)
Пример:
ОткрытьПодбор («Справочник. Номенклатура», «ФормаДляПодбора», Конт, 1);
Процедура ОбработкаПодбора (Элемент, КонтФормы)
НоваяСтрока();
Товар = Элемент;
КонецПроцедуры
Другие полезные методы
Вид()
ПредставлениеВида()
УстановитьАтрибут (ИмяРеквизита, Значение)
ПолучитьАтрибут(ИмяРеквизита)
Выбран()
Выбрать(…)
3.2 Объект «Документ», журналы документов
Документы в системе 1С: Предприятие используются для ввода, просмотра и корректировки информации о совершаемых хозяйственных операциях. У любого документа есть три обязательных реквизита «ДатаДок», «ВремяДок», «НомерДок». Дата и время, – наиболее важные характеристики документов, так как позволяют устанавливать строгую временную последовательность совершения операций. Форма документа редактируется при нажатии кнопки «Форма».
Реквизиты шапки документа задаются в списке «Реквизиты шапки». Реквизиты табличной части задаются в списке «Реквизиты табличной части».
3.2.1 Проведение документа
Для того чтобы документ формировал проводки, необходимо
1. поставить флажок «Разрешить проведение документа».
2. поставить флажок «Бухгалтерский учет» или «Оперативный учет» или «Расчеты»
Формирование проводок происходит в «Модуле документа» в предопределенной процедуре «Обработка проведения».
3.2.2 Журналы документов
Для просмотра списка документов используется «Журналы документов». Создание журнала производится в конфигураторе. В диалоговой форме задаются графы – реквизиты документов, входящих в журнал. Реквизиты табличной части можно добавить в журнал только в том случае, если в свойствах реквизита в закладке «Дополнительно» стоит флажок «Итог по колонке».
Журналы в системе 1С могут быть трех видов: Обычный, Общий и Дополнительный. Обычный журнал предназначен для хранения документов определенных видов. Документ также может быть включен в дополнительный журнал, при этом документ будет зарегистрирован сразу в двух журналах. Дополнительных журналов может быть несколько. Общий журнал показывает документы всех видов. В общем журнале существует возможность отбора документов по значению, указанному пользователем
У журнала документов есть экранная форма, где можно настраивать отображаемые колонки. Можно создавать дополнительные колонки, которые будут отображать информацию из документов. Кроме того, форма журнала документов может содержать любые другие элементы управления: кнопки, переключатели, информационные поля.
В журнале документов можно установить интервал. Тогда он будет показывать только те документы, у которых дата попадает в этот интервал. Для установки интервала предусмотрена специальная кнопка на панели инструментов журнала. Кроме того, интервал можно установить программно методом УстановитьИнтервал
3.2.3 Форма документа
Модуль формы запускается при каждом открытии формы документа. В его контексте доступны все реквизиты документа и реквизиты формы. Кроме предопределенных процедур модуля формы, там можно разместить вспомогательные процедуры и функции, вызываемые, например, экранными кнопками.
Предопределенные процедуры модуля формы документа
ВводНового (ПризнакКопирования, ОбъектКопирования)
ВводНаОсновании(Основание)
ПриЗаписи()
ПриВводеСтроки()
ПриНачалеРедактированияСтроки()
ПриРедактированииНовойСтроки()
ПриОкончанииРедактированияСтроки (ФлагНовойСтроки)
ПриУдаленииСтроки()
Печатные формы документа
Документ обычно имеет печатную форму. Печатная форма полностью формируется средствами встроенного языка 1С. Печатная форма документа – это фактически отчет, формируемый обычно из формы открытого документа и содержащий сведения из этого документа.
У документа может быть несколько шаблонов печатных форм. Средствами встроенного языка (метод ИсходнаяТаблица()) задается тот шаблон печатной формы, который будет использоваться.
Шаблоны печатных форм (таблицы) могут быть общие. Это дает возможность использовать один шаблон для печати нескольких видов документов. Т.е. общая таблица является глобальной для конфигурации и может быть использована в любом модуле.
3.2.4 Номер документа и нумераторы
Номер документа
При интерактивном или программном создании нового документа ему автоматически присваивается новый уникальный номер. Его можно получить или установить какой-нибудь другой с помощью атрибута НомерДок.
Префикс номера
Если используется распределенная база или необходимо разделить нумерацию документов одного вида по некоторому признаку (например, складу), полезно пользоваться префиксами – одним или двумя символами, которые подставляются перед собственно номером документа, но при этом «входят» в номер. При этом префикс должен быть строковым, а в свойствах документа должен быть установлен строковый тип номера. При использовании префиксов номер документа устанавливается следующим образом:
Док = СоздатьОбъект («Документ. Счет»);
Док. Новый();
ПрефДок = Склад. Префикс;
Док. УстановитьНовыйНомер (ПрефДок + «–»);
Нумератор
Нумератор представляет собой объект метаданных, описывающий правила нумерации документов: тип и длина номера документа, его периодичность, необходимость контроля уникальности. Основное назначение нумератора – обеспечить возможность сквозной нумерации документов разного вида, для чего таким документам назначается одинаковый нумератор.
3.2.5 Дата, время и позиция документа
Дата создания (или записи) – обязательный атрибут любого документа. Кроме даты, позиция документа обозначается временем. С ним можно поступать так:
Часы = 0;
Минуты = 0;
Секунды = 0;
Док. ПолучитьВремя (Часы, Минуты, Секунды);
Если Часы > 21 Тогда
Предупреждение («Рабочий день закончен»)
Док. АвтоВремяКонецДня();
ИначеЕсли Часы < 8 Тогда
Предупреждение («Документ будет записан в начало дня»);
Док. АвтоВремяНачалоДня();
ИначеЕсли
Вопрос («Записать документ с текущим временем?», 4) = 7 Тогда
ВвестиЧисло (ЧасУст, «Укажите час, с которым будет записан данный документ», 2,0);
Док. УстановитьВремя (ЧасУст, Минуты, Секунды);
Иначе
Док. АвтоВремяТекущее();
КонецЕсли;
Позиция документа
В крупных многопользовательских системах часто возникает ситуации, когда новые документы записываются почти одновременно, внутри одной секунды. Но все равно не возникает никаких накладок, т. к. документы разделяются внутри секунды с помощью позиции документа. Она представляет собой специальное 32‑х символьное выражение, которое можно прочитать с помощью специального метода:
ПозДокумента = Док. ПолучитьПозицию(); // только чтение!
Позиция имеется только у записанного документа.
Последовательности
Последовательности документов – специальный механизм системы 1С, который позволяет поддерживать правильность итогов и данных проводок документов. Если документы при проведении использует данные бухгалтерских итогов или итогов регистров, то в случае, если задним числом каким-то образом меняются итоги, необходимо автоматически перепроводить все документы, которые использовали измененные итоги. Для контроля за изменением итогов задним числом используются Последовательности.
При описании последовательности в конфигураторе, описывается, какие изменения регистров или бухгалтерских итогов по счетам будут влиять на последовательность, и какие документы входят в эту последовательность (это могут быть документы разного вида). Граница последовательности (ГП) – позиция последнего проведенного с «правильными» итогами документа. Если какие-то итоги изменяются задним числом, граница последовательности отодвигается назад на последний документ, при проведении которого использовались последние «нетронутые» итоги, а все документы, проведенные на основе изменившихся данных итогов, окажутся после границы последовательности. Восстановление последовательности – значит перепроведение всех документов, начиная от границы последовательности, заканчивая точкой актуальности или рабочей датой. Для восстановления последовательности в пользовательском режиме необходимо вызвать пункт Проведение документов… меню Операции.
3.3 Лабораторная работа №3
3.3.1 Цель лабораторной работы
1. Научиться разрабатывать структуру справочников и документов, необходимых для ведения учета.
2. Научиться создавать справочники и документы, настраивать их экранные формы, описывать алгоритм их работы на встроенном языке 1С: Предприятия.
3.3.2 Задание на лабораторную работу №3
Создать в пустом каталоге базу данных.
Создать справочники, необходимые для ведения учета:
1. Необходимо хранить сведения о поставщиках / покупателях (контрагентах), товарах / материалах / продукции (номенклатуре), складах компании.
2. У контрагента может быть несколько договоров, на основании которых происходят поставка и отгрузка товаров.
3. У товара может быть несколько единиц измерения (например, штука, коробка – коробке 25 штук, ящик – в ящике 10 коробок, 250 штук). Одна из этих единиц является основной. Основная единица используется для хранения остатков.
4. У товара есть розничная цена – цена, по которой товар продается. Необходимо, чтобы система хранила историю изменения розничных цен товаров. Изменяться цена должна в документе специального вида.
5. Товар, хранящийся на складе, может быть 1, 2 или 3 сортов. Сорт товара влияет на его продажную цену – за товар 2 сорта берется 80% цены, за товар 3 сорта берется 50% цены. Для хранения информации о составе сортов и процентах создать справочник «Сорта» 4.6 Лабораторная работа №4
Создать документы, необходимые для ведения учета
1. «ИзменениеЦен». В табличной части документа содержится список товаров, их старые и новые розничные цены. При выборе товара обе цены должны заполняться розничной ценой товара, взятой на дату документа. Пользователь корректирует новую цену, старую цену редактировать запрещено.
Документ должен проводитсья. При проведении документа «ИзменениеЦен» документ изменяет розничные цены указанных товаров на указанную дату.
2. «ПриходДенег» и «ВыплатаДенег». Реквизиты документа – Контрагент, Договор, Сумма.
2.1. Если контрагент в документе выбран, то при выборе договора пользователю должны быть доступны для выбора только договора выбранного контрагента.
2.2. Если контрагент изменен, значение поля Договор (заполненное договором предыдущего контрагента) должно очищаться.
3. «ПриходнаяНакладная» и «РасходнаяНакладная».
3.1. Реквизиты шапки документа – Контрагент, Договор, Склад.
- Если контрагент в документе выбран, то при выборе договора пользователю должны быть доступны для выбора только договора выбранного контрагента.
- Если контрагент изменен, значение поля Договор (заполненное договором предыдущего контрагента) должно очищаться.
3.2. Реквизиты табличной части – Товар, Сорт, Количество, Единица измерения, Цена, Сумма. Вспомогательный реквизит – Количество в основной единице измерения (КоличОсн). В реквизит «Цена» проставляется цена за основную единицу измерения.
- Реквизиты табличной части должны заполняться автоматически:
- При выборе товара – реквизиту сорт присваивается значение сорта по умолчанию (из соответствующей константы), единице присваивается основная единица товара, реквизиту цена присваивается значение розничной цены товара на дату документа.
- При изменении сорта – пересчитывается цена и сумма.
- При изменении количества – пересчитывается КоличОсн и сумма
- При изменении единицы – пересчитывается КоличОсн и сумма.
- При изменении Цены – пересчитывается Сумма
- Реквизиты Сумма и КоличОсн должны быть недоступны для редактирования.
Создать журналы для отображения списка документов
1. «Цены» с документами вида «ИзменениеЦен»
2. «Деньги» с документами вида «ПриходДенег» и «ВыплатаДенег». В журнале должны отображаться контрагент (покупатель или поставщик) и уплаченная / полученная сумма
3. «Товары» с документами вида «ПриходнаяНакладная» и «РасходнаяНакладная». В журнале должны отображаться контрагент и общая сумма закупленных / проданных товаров по документу.
4. «Общий» журнал, включающий в себя все виды документов. В журнале должна быть возможность фильтровать документы по контрагенту.
4. Создание отчетов. Работа с таблицами. Использование языка запросов
4.1 Таблица
Для создания печатных форм и для ввода табличных данных используется объект «Таблица». Таблицы могут располагаться в разделе «Общие таблицы» и в формах визуальных объектов системы. Форма может иметь одну таблицу для ввода и много таблиц для вывода.
4.1.1 Таблица для ввода
Таблица для ввода может быть только в отчетах и обработках. Чтобы задать имя таблицы для ввода нужно войти в окно «Свойства формы», и установить переключатель «Использовать таблицу» в положение «Для ввода данных». В этом случае при открытии формы отчета становится видна таблица, в которую можно ввести данные. Обращаться к ячейкам таблицы можно по именам, которые задаются в конфигураторе.
4.1.2 Таблица для вывода
Таблица для вывода фактически является шаблоном для вывода данных. В свойствах каждая ячейки таблицы можно задать тип ячейки: «Текст», «Выражение», «Шаблон» и «Фиксированный шаблон».
- «Текст» печатается так, как он задан в конфигураторе.
- «Выражение» вычисляется и в ячейку записывается результат.
- «Шаблон» – это текст, в котором может присутствовать выражение, которое задается в квадратных скобках. Пример шаблона: «Сумма равна [ПечСумма]».
Вывод данных производится по секциям. Секции бывают горизонтальные и вертикальные. Для вывода таблицы используется следующая последовательность команд:
Таб=СоздатьОбъект («Таблица»);
Таб. ИсходнаяТаблица («ТОРГ‑12»);
Таб. ВывестиСекцию («Шапка»);
Док. ВыбратьСтроки();
Пока Док. ПолучитьСтроку()=1 Цикл
Таб. ВывестиСекцию («Строка|ВертикальнаяСекция»);
Таб. ПрисоединитьСекцию («Строка|ДопВертикальнаяСекция»);
КонецЦикла;
Таб. ВывестиСекцию («Подвал»);
Таб. Показать();
4.1.3 Поведение сформированного отчета
В системе 1С: Предприятие отчеты могут быть вполне активными объектами. Это означает, что щелкнув например, на сотруднике можно открыть форму этого сотрудника или сформировать более детальный отчет только по этому сотруднику. Для этого предназначены свойства ячейки Расшифровка и процедура ОбработкаЯчейкиТаблицы().
4.2 Запросы
Выборку сводных данных можно осуществлять «вручную». Для этого мы делаем выборку с помощью функции «ВыбратьДокументы()», а затем заполняем объект типа «ТаблицаЗначений» нужными значениями и сворачиваем таблицу значений с помощью функции «Свернуть()». Однако более быстро как на стадии разработки, так и на стадии выполнения, это позволяет сделать механизм запросов.
4.2.1 Создание запроса
Запрос – это обращение к системе 1С с просьбой выбрать определенные данные из базы данных. Например, с помощью запроса можно быстро организовать выбор всех сотрудников с определенной должностью. Для организации запроса необходимо выполнить следующие действия.
Запрос = СоздатьОбъект («Запрос»);
ТекстЗапроса = «<текст запроса на особом языке запросов>»
Запрос. Выполнить(ТекстЗапроса);
Переменные в запросе
С помощью переменных запроса происходит обращение к требуемым данным. Переменные запроса чаще всего ссылаются на справочники и документы. Кроме того можно ссылаться на журналы расчетов, регистры, бухгалтерские счета.
|Ф.И.О. = Справочник. Сотрудники. Наименование;
|Долж = Справочник. Сотрудники. Должность;
|ДатаПриема = Справочник. Сотрудники. ДатаПриема;
|ДатаУвольнения = Справочник. Сотрудники. ДатаУвольнения;
|»;
Группировка и сортировка
Практически в любом запросе есть ключевое слово Группировка. Оно означает, что нужно выбрать из таблицы только те записи, у которых значение определенного поля различается. Этот запрос выберет из справочника Сотрудники список используемых должностей и отсортирует этот список по алфавиту.
Запрос = СоздатьОбъект («Запрос»);
ТекстЗапроса =»
|Долж = Справочник. Сотрудники. Должность;
|Группировка Долж упорядочить по Долж. Наименование;
|»;
Запрос. Выполнить(ТекстЗапроса);
Функции в запросе
Для вычисления в запросах используются функции. Возможные функции приведены в Синтакс-помощнике.
Пример: подсчитаем, сколько сотрудников работает по каждой должности.
Запрос = СоздатьОбъект («Запрос»);
ТекстЗапроса =»
|Долж = Справочник. Сотрудники. Должность;
|Группировка Долж упорядочить по Долж. Наименование;
|Функция Колво = Счётчик();
|»;
Запрос. Выполнить(ТекстЗапроса);
Условие отбора
Часто требуется ограничить выборку только нужными значениями. Например, этот запрос выбирает всех сотрудников с определенной должностью.
Запрос = СоздатьОбъект («Запрос»);
ТекстЗапроса =»
|Сотр = Справочник. Сотрудники. ТекущийЭлемент;
|КодДолж = Справочник. Сотрудники. Должность. Код;
|Группировка Сотр упорядочить по Сотр. Наименование;
|Условие (КодДолж = 7);
|»;
Запрос. Выполнить(ТекстЗапроса);
4.2.2 Обработка результатов запроса
После выполнения запроса в программе можно использовать полученный временный набор данных. Изначально объект «НашЗапрос» спозиционирован на первой записи временного набора данных, где содержится общий итог по запросу. Поэтому общие итоги по запросу можно использовать сразу же после выполнения запроса.
Далее, мы можем в цикле проходить по группировкам запроса, начиная с внешней (первой) группировки. В теле этого цикла объект «НашЗапрос» позиционируется во временном наборе данных на записи, содержащие итоги по каждой конкретной группировке.
После завершения цикла по самой внешней группировке, объект «НашЗапрос» снова позиционируется на первой записи временного набора данных, где содержится общий итог по запросу. Поэтому, общие итоги по запросу можно использовать в двух местах: до и после цикла по самой внешней группировке запроса.
Запрос=СоздатьОбъект («Запрос»);
ТекстЗапроса = «…»;
Если Запрос. Выполнить(ТекстЗапроса)<>1 Тогда
Возврат;
КонецЕсли;
Пока Запрос. Группировка(1)=1 Цикл
// Вывод результатов по первой группировке
Пока Запрос. Группировка(2)=1 Цикл
// Вывод результатов по второй группировке
КонецЦикла;
КонецЦикла;
// Вывод результатов по всем группировкам («Итого»)
4.2.3 Использование конструктора запросов
Запроса можно создать с помощью конструктора запросов. С его помощью можно в диалоговых формах задать параметры запроса и конструктор сам сгенерирует процедуру и таблицу для печати результатов отчета.
4.3 Лабораторная работа №4
4.3.1 Цель лабораторной работы
1. Научиться создавать отчеты с использованием запросов
4.3.2 Задание на лабораторную работу
1. Создать отчет «Прайс-лист». Столбцы отчета – Товары, цена 1 сорта, цена 2 сорта… и т.д. Цена выводится на указанную в настройке отчета дату. Предусмотреть возможность вывода товаров по группам или без учета групп.
2. Добавить в отчет «Прайс-лист» возможность выбора сортов, которые будут выводиться в колонках отчета.
3. Создать отчет «Реестр документов» за период. Столбцы отчета – Документ, сумма, контрагент. (заполняются, если есть соответствующий реквизит документа). Внутри периода документы группируются по одной из группировок (на усмотрение пользователя) – день, неделя, месяц. По группировке посчитать сумму и количество документов.
Вывод
Информационная система 1С: Предприятие подходит для обучения студентов основам работы с системами программирования. Система 1С: Предприятие 7.7 является «конструктором» для создания мощных программ автоматизации предприятия «малыми силами». За счет реализации объектно-ориентированного подхода возрастает скорость разработки приложений. Встроенный язык программирования обладает большими возможностями. Наличие конструкторов и визуальных средств проектирования обеспечивает простоту и удобство работы с программой, а интуитивно-понятный интерфейс – ее быстрое освоение.
Эта система имеет компонентную структуру, позволяет не только импорт сторонних компонент, но и возможность разработки собственных.
Список литературы
1. 1С: Предприятие Версия 7.7 Конфигурирование и администрирование. Части 1 и 2, Москва, 1С: Паблишинг, 2005 г.
2. 1С: Предприятие Версия 7.7 Описание встроенного языка. Части 1 и 2, Москва, 1С: Паблишинг, 2005 г.
3. С.А. Митичкин, Учебник по 1С
4. С.Н. Постовалов, Программирование в системе 1С: Предприятие 7.7 (компонента «Бухгалтерский учет»): курс лекций. УЦМИ «Бизнес-Информатика», Новосибирск, 2002 – 63 с.
Приложение 1
Пример отчёта по лабораторной работе
Постановка задачи
Создать отчет «Ведомость по товарам», в котором отображать количество товара на начало и конец периода, поступление и расход товара. Колонки отчета – Товар, нач остаток, приход, расход, кон остаток.
В отчете должна быть возможность выбрать товар / группу товаров, по которым делается отчет. Поле «Единица» заполняется основной единицей товара
Выполнение
Создан отчет «Ведомость по товарам». В диалоге отчета размещены элементы – выбор периода (НачДата и КонДата) и ВыбТовар. Отчет формируется на основании данных запроса к итогам и движениям регистра «ОстаткиТоваров». Если в диалоге реквизит ВыбТовар заполнен, к запросу добавляется условие.
Процедура, формирующая отчет:
Процедура Сформировать()
Запрос = СоздатьОбъект («Запрос»);
ТекстЗапроса =
«Период с НачДата по КонДата;
|Товар = Регистр. ОстаткиТоваров. Товар;
|Количество = Регистр. ОстаткиТоваров. Количество;
|Функция Нач = НачОст(Количество);
|Функция Прих = Приход(Количество);
|Функция Расх = Расход(Количество);
|Функция Кон = КонОст(Количество);
|Группировка Товар;»
;
Если ВыбТовар. Выбран() = 1 Тогда
ТекстЗапроса = ТекстЗапроса
+ «Условие Товар в ВыбТовар;»;
КонецЕсли;
Если Запрос. Выполнить(ТекстЗапроса) = 0 Тогда
Возврат;
КонецЕсли;
Таб = СоздатьОбъект («Таблица»);
Таб. ИсходнаяТаблица («Таблица»);
Таб. ВывестиСекцию («Заголовок»);
Пока Запрос. Группировка («Товар») = 1 Цикл
Если Запрос. Товар. ЭтоГруппа()=1 Тогда
Таб. ВывестиСекцию («Группа»);
Иначе
Един = Запрос. Товар. ОсновнаяЕдиница;
Таб. ВывестиСекцию («Товар»);
КонецЕсли;
КонецЦикла;
Таб. ВывестиСекцию («Итого»);
Таб. ТолькоПросмотр(1);
Таб. Показать («Отчет по остаткам товаров», «»);
КонецПроцедуры
Пример выполненного отчета:
Товары | Ед. | Начальный остаток | Приход | Расход | Конечный остаток |
Крупы
|
|||||
Крупа «Геркулес» | упак | 160,000 | 140,000 | 300,000 | |
Крупа гречневая | упак | 280,000 | 70,000 | 350,000 | |
Крупа манная | пак | 9,000 | 8,000 | 17,000 | |
Сахарный песок | пак | 5,000 | 10,000 | 15,000 | |
Консервы
|
|||||
Килька | банка | 12,000 | 12,000 | ||
Ставрида | банка | 5,000 | 5,000 |