Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> Руководство разработчика для MEDOC          
Bernet Подменю пользователя
сообщение 26.04.17, 11:25
Сообщение #1

Ветеран
Иконка группы
Группа: Местный
Сообщений: 858
Из: Місто щасливих людей
Спасибо сказали: 317 раз
Рейтинг: 0

Всем привет.
Нужна документация с описанием структуры БД Медка.
Есть задача на допиливание функционала 1С и получении данных из Медка, а именно: нужно сверять коды УКТЗЕД поставщиков (которые ведутся у нас в базе) и те, которые приходят в входящих налоговых накладных в Медке.
Из примера медовой стыковки COM-объект с реестром входящих налоговых получил, теперь хочу пройтись по таб. части товаров каждого документа, там есть колонка "Код УКТЗЕД" - вот не знаю как её вытянуть, не хотелось бы пальцем в небо тыкать, а знать наверняка. Может кто находил нормальную документацию?

Дошел до следующего места:
        // получаем данные с МЕДКА
    App = Неопределено;
    Попытка
        App = Новый COMОбъект("Medoc.ZApplication")
    Исключение
        Возврат;
    КонецПопытки;                
    
    // Описание входящих параметров Медка:
    // ТипДокумента - "10100" - Налоговая накладная
    // ТипДокумента - "10101" - Приложение 2
    // ТипДокумента - "10100" - Входящий налоговый документ
    
    // Направление - 1 - исходящие
    // Направление - 2 - входящие
        
    prim = App.GetPrimaryDocs();
    Reestr = prim.GetPrimaryReestr("10100", 2, НачалоДня(НачалоПериода), КонецДня(КонецПериода));
    Reestr.First();
    Счетчик = Reestr.RecordCount;
    Пока Счетчик <> 0 Цикл
        
        НомерДокМед     = Reestr.Fields.Item("DOC_NUM").Value;
        ДатаДокМед      = Reestr.Fields.Item("DOC_DATE").Value;
        СуммаДокМед     = Reestr.Fields.Item("DOCSUM").Value;      
        
                // КАК ТУТ ОРГАНИЗОВАТЬ ПЕРЕБОР СТРОК ТАБ. ЧАСТИ И ВЫТЯНУТЬ КОД УКТЗЕД  С КАЖДОЙ СТРОКИ ?

        Счетчик = Счетчик-1;
          Reestr.Next();
    КонецЦикла;


P.S. [необходимо зарегистрироваться для просмотра ссылки] я не нашел того что хотел


Signature
Дописываю конфигурации на платформе 8.х.
- Управление торговым предприятием для Украины
- Управление производственным предприятием для Украины
- Управление небольшой фирмой для Украины
- Бухгалтерия для Украины;
- Общепит для Украины
- Ресторан (Рарус)
- Розница

Petre Подменю пользователя
сообщение 26.04.17, 11:34
Сообщение #2

Живет на форуме
Иконка группы
Группа: Местный
Сообщений: 2902
Из: Київ, Україна
Спасибо сказали: 1144 раз
Рейтинг: 1225

Bernet @ Сегодня, 12:25 * ,
Откройте в Медке входящую налоговую, переключите в режим электронного документа - будет вам расписано по именам полей.
Обновленная инструкция (вер. 11) лежит в программном каталоге медка.


Signature
Допрацьовую:
- "Бухгалтерія для України 2.1";
- "Альфа-Авто: Автосалон+Автосервіс+Автозапчастини, українська версія".

Спасибо сказали: iskander1977,

andr_andrey Подменю пользователя
сообщение 26.04.17, 11:43
Сообщение #3

Почти ветеран
Иконка группы
Группа: Местный
Сообщений: 623
Спасибо сказали: 166 раз
Рейтинг: 130.8

Прикрепил файлы в теме в Хранилище, админ одобрит, она появится.


Signature
#define private public
enum BOOL { FALSE, TRUE, FILENOTFOUND } is made my day

Спасибо сказали: Bernet,

Petre Подменю пользователя
сообщение 26.04.17, 12:00
Сообщение #4

Живет на форуме
Иконка группы
Группа: Местный
Сообщений: 2902
Из: Київ, Україна
Спасибо сказали: 1144 раз
Рейтинг: 1225

Bernet @ Сегодня, 12:25 * ,
В вашем случае вы получили таблицу реестра, и читаете его поля.
Прочитайте поле идентификатора документа в медке;
CardCode = Reestr.FldVal("CardCode");

получите сам документ:
Doc = App.OpenDocumentByCode(CardCode);

получите нужную таблицу, или основную:
rsMain = Doc.DataSets("MAIN");

или табличную часть:
rsTab = Doc.DataSets("TAB1");

и далее читайте поля этих таблиц.


Signature
Допрацьовую:
- "Бухгалтерія для України 2.1";
- "Альфа-Авто: Автосалон+Автосервіс+Автозапчастини, українська версія".

Спасибо сказали: Bernet,

Bernet Подменю пользователя
сообщение 26.04.17, 12:01
Сообщение #5

Ветеран
Иконка группы
Группа: Местный
Сообщений: 858
Из: Місто щасливих людей
Спасибо сказали: 317 раз
Рейтинг: 0

Petre @ Сегодня, 13:00 * ,
Спасибо, тоже уже понял, что не туда полез


Signature
Дописываю конфигурации на платформе 8.х.
- Управление торговым предприятием для Украины
- Управление производственным предприятием для Украины
- Управление небольшой фирмой для Украины
- Бухгалтерия для Украины;
- Общепит для Украины
- Ресторан (Рарус)
- Розница

Vofka Подменю пользователя
сообщение 26.04.17, 12:59
Сообщение #6

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 13948
Из: Киев
Спасибо сказали: 4514 раз
Рейтинг: 3635.6

Цитата(andr_andrey @ 26.04.17, 12:43) *
Прикрепил файлы в теме в Хранилище, админ одобрит, она появится.

Опубликовано.

Спасибо сказали: Bernet,

Gazulo Подменю пользователя
сообщение 26.04.17, 21:38
Сообщение #7

Оратор
*****
Группа: Пользователи
Сообщений: 273
Спасибо сказали: 46 раз
Рейтинг: 46

Bernet @ Сегодня, 13:01 * ,
можете кинуть пример что у Вас получилось, спасибо.

Bernet Подменю пользователя
сообщение 27.04.17, 8:54
Сообщение #8

Ветеран
Иконка группы
Группа: Местный
Сообщений: 858
Из: Місто щасливих людей
Спасибо сказали: 317 раз
Рейтинг: 0

Gazulo @ Вчера, 22:38 * ,
что-то вроде такого:
    App = Неопределено;
    Попытка
        App = Новый COMОбъект("Medoc.ZApplication")
    Исключение
        Возврат;
    КонецПопытки;                
    
    // Описание входящих параметров Медка:
    // ТипДокумента - "10100" - Налоговая накладная
    // ТипДокумента - "10101" - Приложение 2
    // ТипДокумента - "10100" - Регистрация входящего налогового документа
    
    // Направление - 1 - исходящие
    // Направление - 2 - входящие
        
    prim = App.GetPrimaryDocs();
    Reestr = prim.GetPrimaryReestr("10100", 2, НачалоГода(ТекущаяДата()), КонецДня(ТекущаяДата()));
    Reestr.First();
    Счетчик = Reestr.RecordCount;
    Пока Счетчик <> 0 Цикл
        
        //ВнешИд             = Reestr.Fields.Item("EXDOC_ID").Value;
        //НомерДокМед         = Reestr.Fields.Item("DOC_NUM").Value;
        МедИД                 = Reestr.Fields.Item("DOC_ID").Value;
        ДатаДокМед          = Reestr.Fields.Item("DOC_DATE").Value;
        СуммаДокМед         = Reestr.Fields.Item("DOCSUM").Value;      
        
        CardCode = Reestr.FldVal("CardCode");
        
        Doc = App.OpenDocumentByCode(CardCode);
        
        rsMain = Doc.DataSets("MAIN");
        КонтрагентИНН    = rsMain.Fields.Item("FIRM_INN").Value;
            
        rsTab = Doc.DataSets("TAB1");
        
        СчетчикТЧ = rsTab.RecordCount;
        Пока СчетчикТЧ <> 0 Цикл
            
            Номенклатура     = rsTab.Fields.Item("TAB1_A13").Value;
            КодУКТЗЕД         = rsTab.Fields.Item("TAB1_A131").Value;
            ЦенаБезНДС        = rsTab.Fields.Item("TAB1_A16").Value;
            
            НоваяСтрока = ТабДанныхМедка.Добавить();
            НоваяСтрока.ДокументИД      = МедИД;
            НоваяСтрока.ДатаДок         = ДатаДокМед;
            НоваяСтрока.СуммаДок        = СуммаДокМед;
            НоваяСтрока.КонтрагентИНН     = КонтрагентИНН;
            НоваяСтрока.Номенклатура    = Номенклатура;
            НоваяСтрока.КодУКТЗЕД        = КодУКТЗЕД;
            НоваяСтрока.ЦенаБезНДС        = ЦенаБезНДС;
            
            СчетчикТЧ = СчетчикТЧ-1;
              rsTab.Next();    
        КонецЦикла;
                
        Счетчик = Счетчик-1;
          Reestr.Next();
    КонецЦикла;


Signature
Дописываю конфигурации на платформе 8.х.
- Управление торговым предприятием для Украины
- Управление производственным предприятием для Украины
- Управление небольшой фирмой для Украины
- Бухгалтерия для Украины;
- Общепит для Украины
- Ресторан (Рарус)
- Розница

Спасибо сказали: Gazulo, iskander1977, Starky2009,

Gazulo Подменю пользователя
сообщение 27.04.17, 9:36
Сообщение #9

Оратор
*****
Группа: Пользователи
Сообщений: 273
Спасибо сказали: 46 раз
Рейтинг: 46

Bernet @ Сегодня, 9:54 * ,
Спасибо.

Vofka Подменю пользователя
сообщение 27.04.17, 10:02
Сообщение #10

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 13948
Из: Киев
Спасибо сказали: 4514 раз
Рейтинг: 3635.6

Цитата(Gazulo @ 27.04.17, 10:36) *
Спасибо.

Для спасибо у нас специальная кнопочка имеется.

Спасибо сказали: Gazulo,

Bernet Подменю пользователя
сообщение 20.11.17, 10:25
Сообщение #11

Ветеран
Иконка группы
Группа: Местный
Сообщений: 858
Из: Місто щасливих людей
Спасибо сказали: 317 раз
Рейтинг: 0

Кстати если кто будет страдать похожей фигней - чтобы не морочить Медовую стыковку, COM-объекты и уйти от необходимости запуска Медка для чтения данных из него - есть способ лучше и проще - обращение к базе медка Firebird напрямую через ODBC драйвер. Работает быстрее и надежнее. Простым SQL запросом можно вытянуть все что необходимо.

P.S. Однако стоит помнить что такую связку лучше использовать только на чтение из Медка, записывать в базу ничего из вне не рекомендуется, т.к. хз как поведет себя потом Медок.


Signature
Дописываю конфигурации на платформе 8.х.
- Управление торговым предприятием для Украины
- Управление производственным предприятием для Украины
- Управление небольшой фирмой для Украины
- Бухгалтерия для Украины;
- Общепит для Украины
- Ресторан (Рарус)
- Розница

awp Подменю пользователя
сообщение 01.12.17, 8:52
Сообщение #12

Почти ветеран
Иконка группы
Группа: Местный
Сообщений: 520
Спасибо сказали: 70 раз
Рейтинг: 51.3

Bernet @ 20.11.17, 10:25 * ,
Есть описание таблиц и полей?


Signature
Бухгалтер - это не профессия! Это диагноз!

Bernet Подменю пользователя
сообщение 01.12.17, 9:14
Сообщение #13

Ветеран
Иконка группы
Группа: Местный
Сообщений: 858
Из: Місто щасливих людей
Спасибо сказали: 317 раз
Рейтинг: 0

awp @ Сегодня, 8:52 * ,
Нет, в Инете не нашел, Медок тоже сморозился. Как уже мне выше подсказывали, иена большей части полей базы совпадает с той структурой которая видна в пользовательском режиме, когда переходим в режим просмотра структуры документа (есть там такая функция точно не помню как называется, когда пользователь прямо на документе видит как эти поля называются в макете). Может это немного поможет и упростит работу


Signature
Дописываю конфигурации на платформе 8.х.
- Управление торговым предприятием для Украины
- Управление производственным предприятием для Украины
- Управление небольшой фирмой для Украины
- Бухгалтерия для Украины;
- Общепит для Украины
- Ресторан (Рарус)
- Розница

Bernet Подменю пользователя
сообщение 01.12.17, 11:58
Сообщение #14

Ветеран
Иконка группы
Группа: Местный
Сообщений: 858
Из: Місто щасливих людей
Спасибо сказали: 317 раз
Рейтинг: 0

У меня была задача: в налоговую автоматом подтягивать коды УКТЗЕД и признак импортного товара, проблема в том что ещё и наименования товаров у нас в базе и у поставщиков не совпадают.
Логика такая: формируем налоговую накладную - смотрим по какой реализации она создана, дальше по реализации по проводкам смотрим с какой партии списало товар (ищем поступление товаров и услуг), далее ищем по партии созданную Входящую налоговую накладную. Получаю её дату и номер. Далее по этой дате и номеру нахожу в Медке в базе нужный мне документ, перебираю все товары и проверяю есть ли товар с таким количеством, ценой и суммой как у нас в поступлении (тут конечно это пальцем в небо, если учесть что могут быть две позиции с одинаковой ценой и количеством, но бухи такое захотели, пусть теперь мучаются 19000000.gif
Если у вас что-то похожее могу дать имена таблиц и реквизитов, которые использовал - сэкономит время.


Signature
Дописываю конфигурации на платформе 8.х.
- Управление торговым предприятием для Украины
- Управление производственным предприятием для Украины
- Управление небольшой фирмой для Украины
- Бухгалтерия для Украины;
- Общепит для Украины
- Ресторан (Рарус)
- Розница

AT-2000 Подменю пользователя
сообщение 04.01.18, 17:59
Сообщение #15

Общительный
**
Группа: Пользователи
Сообщений: 28
Спасибо сказали: 25 раз
Рейтинг: 0

Bernet @ 27.04.17, 8:54 * ,
а я пітаюсь прописать ИД в 1С звит потому как DOCID без дефисов а EXDOCID пустой
                Пока Счетчик <> 0 Цикл
                    Если ПустаяСтрока(Reestr.Fields.Item("EXDOC_ID").Value)Тогда
                         МедИд = Reestr.Fields.Item("DOC_ID").Value=СтрЗаменить(ИД,"-","");
                     Иначе
                         МедИд = Reestr.Fields.Item("EXDOC_ID").Value=ИД;
                    КонецЕсли;
                    НомерДокаМед = Reestr.Fields.Item("DOC_NUM").Value;
                    КонтрМед = Reestr.Fields.Item("PATRNER_IPN").Value;
                
                    Если МедИд и НомерДока = НомерДокаМед и КонтрМед = Контр Тогда
                        НаличиеВМедке = Истина;
                        ЕРНН = Reestr.Fields.Item("REGDATE").Value;
                        Если ПустаяСтрока(Reestr.Fields.Item("EXDOC_ID").Value)Тогда
                            orgId  = App.SelectFirm(СокрЛП(КодПоЕДРПОУ), СокрЛП(пФил));
                            CardCode = Reestr.FldVal("CardCode");
                            Doc = App.OpenDocumentByCode(CardCode);
                            Doc.DisableScripts();
                            rsMain=Doc.DataSets("MAIN");
                            rsMain.Edit();
                            rsMain.Fields.Item("EXDOC_ID").Value=ИД;
                            rsMain.Post();
                            Doc.EnableScripts();//включаем скрипты  
                            Doc.Save(1);  
                            Doc.Close();
                        КонецЕсли;

zay Подменю пользователя
сообщение 29.07.20, 11:32
Сообщение #16

Завсегдатай
Иконка группы
Группа: Местный
Сообщений: 162
Из: Киев
Спасибо сказали: 130 раз
Рейтинг: 135.8

Делаю задачу. В рамках задачи надо было получить некоторые данные из НН из базы Медок. Клиент не покупал модуль интеграции, поэтому пришлось разобраться как получать данные из Медка прямыми запросами. Хочу поделиться

Для отладки SQL запросов к базе Firebird использовал программу "SQL Manager for InterBase/Firebird". Входит в пакет "SQL Management Studio for InterBase/Firebird", использование 30 дней бесплатно

Запрос, которым можно получить список таблиц базы и их объем
SELECT I.rdb$relation_name RELATION,
  cast(1/I.RDB$STATISTICS as integer) RECORD_COUNT
  FROM RDB$INDICES I
  JOIN RDB$RELATION_CONSTRAINTS C
  ON (C.RDB$INDEX_NAME = I.RDB$INDEX_NAME)
  AND (C.RDB$CONSTRAINT_TYPE = 'PRIMARY KEY')
  AND (I.RDB$STATISTICS > cast(0 as double precision))

Запрос взят отсюда [необходимо зарегистрироваться для просмотра ссылки]
Эту информацию можно использовать для поиска нужного справочника

С документами все проще. В Медке при открытии документа он открывается на отдельной странице. Заголовок страницы - это часть имени таблицы БД



Документ в Медок состоит минимум из двух таблиц. Имя таблицы с реквизитами документа заканчивается на _MAIN, имя таблицы с табличной частью заканчивается на _TAB1, _TAB2 и т.д. Связь между этими таблицами по полю CARDCODE
Пример запроса для получения данных из НН
select
  MAIN.*
, T.*
from FJ1201002_MAIN AS MAIN
INNER JOIN FJ1201002_TAB1 AS T
      ON T.CARDCODE = MAIN.CARDCODE


Расшифровку имен полей для НН нашел здесь: [необходимо зарегистрироваться для просмотра ссылки]

Сообщение отредактировал Vofka - 29.07.20, 13:22

Спасибо сказали: bakalavr, Batchir, Bernet, kihor, Vofka,

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 28.03.24, 20:38
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!