про нашего любимого желто-красно-синего друга

Не так давно в конфигурации Бухгалтерия Предприятия 2.0 появилась обработка "Расчет авансовых платежей по налогу на имущество"

Первый и второй квартал 2021 года авансовые платежи рассчитывались корректно, но при расчете 3 квартала сумма налога оказалась неверной (хорошо, что бухгалтер не слепо доверяет программе, а все перепроверяет)

В процессе разбора в коде, я выяснил, что в ее логике зашит следующий расчет Среднегодовой стоимости имущества:

(01.01+01.02+01.03+01.08+01.09+01.10)

При том, что по правилам должны считаться суммы остаточной стоимости за каждый месяц с 01 по 10.

(01.01+01.02+01.03+01.04+01.05+01.06+01.07+01.08+01.09+01.10)

Т.е. по сути в формуле обработки не учтен 2 квартал.

Поэтому в форме обработки пришлось дописать для 3 квартала:

		Если Строка.НомерПериода > 7 И Строка.НомерПериода < 11 Тогда
			
			//+++++++Добавленный код++++++++++++
			ДелимоеСредняяСтоимость = ДелимоеСредняяСтоимость + Строка.ОстаточнаяСтоимостьНа0105
			+ Строка.ОстаточнаяСтоимостьНа0106 + Строка.ОстаточнаяСтоимостьНа0107;
                        //-------Конец Добавленного кода------------
			
			ДелимоеСредняяСтоимость = ДелимоеСредняяСтоимость + Строка.ОстаточнаяСтоимостьНа0108
			+ Строка.ОстаточнаяСтоимостьНа0109 + Строка.ОстаточнаяСтоимостьНа0110;
			
			Делитель = 10;
			
		КонецЕсли;

А так же оказалось, что в остаточную стоимость на 01.10 обработка считает остаточную стоимость на 01.09 (т.е. суммы в обеих колонках равны)

Так же пришлось исправить код:

        Период = ?(Счетчик = 10, КонецМесяца(Период), ДобавитьМесяц(Период, 1));

на:

        //Период = ?(Счетчик = 10, КонецМесяца(Период), ДобавитьМесяц(Период, 1));
        Период = ДобавитьМесяц(Период, 1);

К данной статье приложил исправленную доработку, поскольку в последней версии конфигурации на 28.10.2021 она все еще в таком же виде, можете использовать ее как внешнюю или заменить в конфигурации.

Существует множество способов резервного копирования серверов и баз данных, но нигде не нашел описания автоматизации резервного копирования баз 1С в облако cloud.mail.ru

Почему cloud.mail.ru? Потому что в 2013 году были получены халявные 100Гб и грех ими не воспользоваться. Так же в данной статье я опишу несколько полезных команд windows, которые пригодятся и для других задач (например очистка файлов старше определенного срока, как убить сеансы 1С, что делать чтобы bat-файл дожидался выгрузки dt, не переходя на следующую команду, архивация dt с разбивкой на архивы не более 2Гб (mail.ru файлы большего размера не пропускает) )

Итак, для начала, например, на диске D: создаем папку backup. В ней папку SQL, в которую у нас будут складываться ежедневные backup'ы sql сервера. Настроить их можно следующим образом: https://infostart.ru/public/199760/

Затем нам нужно позаботиться чтобы на сервере был установлен архиватор, в моем примере WinRar

И настроить WebDAVCloudMailRu для подключения хранилища cloud.mail.ru в качестве сетевого диска, подробнее здесь:  https://glashkoff.com/webdav-cloudmailru/

Теперь все готово для запуска нашего .bat файла, которые последовательно выполняет операции:

1) Удаляем бэкапы базы SQL средствами сервера старше 7 дней

Forfiles -p "D:\backup\SQL" -s -m *.* -d -7 -c "cmd /c del /q @path"

2) Удаляем временные файлы, остающиеся от службы WebDAV (иначе они переполнят диск C:)

del /F/S/Q C:\Windows\ServiceProfiles\LocalService\AppData\Local\Temp\* 

3) Убиваем открытые сеансы 1С на сервере (можно перед запуском нашего bat-файла в планировщике поставить перезагрузку сервера, чтобы наверняка)

taskkill /IM 1cv8.exe /f
taskkill /IM 1cv8c.exe /f
taskkill /IM 1cv8s.exe /f

4) Выгружаем базы. В командной строке выгрузки .dt нужно указывать именно 1cv8.exe, иначе 1С вернет управление командному файлу и он пойдет дальше не дождавшись выгрузки.

командная строка выгрузки SQL базы
call "C:\Program Files\1cv8\8.3.xx.xxxx\bin\1cv8.exe" CONFIG /M /S"Server1c\ut" /N"ИмяПользователя" /P"ПарольПользователя" /Out"D:\backup\1c_ut.log"  /DumpIB"D:\backup\bak\ut.dt"

командная строка выгрузки файловой базы
call "C:\Program Files\1cv8\8.3.xx.xxxx\bin\1cv8.exe" CONFIG /M /F"C:\1С\Бухгалтерия" /N"ИмяПользователя" /P"ПарольПользователя" /Out"D:\backup\1c_buh.log"  /DumpIB"D:\backup\bak\buh.dt"

5) Архивируем выгруженные базы, с размером не более 2000000 кбайт (2Гб), иначе сервис их не пропустит

"C:\Program Files (x86)\WinRAR\rar.exe" a -o+ -dh -r -m5 -v2000000 D:\backup\bak\backup1Cut_0.rar D:\backup\bak\ut.dt
"C:\Program Files (x86)\WinRAR\rar.exe" a -o+ -dh -r -m5 -v2000000 D:\backup\bak\backup1Cbuh_0.rar D:\backup\bak\buh.dt

6) подключаем облако mail.ru как сетевой диск через службу WebDAVCloudMailRu 

net use M: /DELETE
net use M: http://127.0.0.1:801 "ПарольОблакаMailRu" /USER:ЛогинОблакаMailRu

7) Копируем архивы в облако Mail.ru

xcopy "D:\backup\bak\backup1Cbuh_0.rar" M:\ /Y
xcopy "D:\backup\bak\backup1Cut_0.*" M:\ /Y

На этом все. Готовый .bat-ник можете скачать из вложения к статье.

Вторник, 16 апреля 2019 03:45

1С vs C# стоимость разработки

Автор

В сообществах программистов часто кипят споры о том, что 1С-ники не программисты, 1С не язык программирования и т.п.

Подолью масла в огонь :)

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

И конкретный пример:

Столкнулся на прошлой неделе еще с одной неординарной проблемой: внезапно перестала работать синхронизация товаров и цен в программе 1С Управление Торговлей 11 с сайтом на Bitrix.

Как выяснилось, в 11 Торговле цены выгружаются исходя из соглашений.

Что нужно проверить в соглашениях:

1. Должно быть типовым (не индивидуальным) 
2. Должно быть действующим. т.е. статус соглашения должно быть "Действует" 
3. Должно быть с пустым сегментом партнеров, т.е. не заполнено поле "Сегмент партнеров" 
4. Должно быть доступно внешним пользователям, т.е. установлен флаг "Доступно внешним пользователям". 
4.1 Если флаг "Доступно внешним пользователям" не виден, то нужно включить использование внешних пользователей (в администрировании флаг "Разрешить доступ внешним пользователям") 


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

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

Это я все проверил - проблем не было.

Тогда я выгрузил данные в файл обмена и проанализировал его.

В файле offers0_1.xml обнаружил дублирующую строку ТипЦены (с одним id, но разными валютами)

 Разбираемся, откуда взялась цена в Евро.

С помощью консоли запросов выбираем регистраторы цен в евро из регистра сведений Цены Номенклатуры:

ВЫБРАТЬ
    ЦеныНоменклатуры.Цена КАК Цена,
    ЦеныНоменклатуры.Валюта КАК Валюта,
    ЦеныНоменклатуры.Регистратор КАК Регистратор,
    ЦеныНоменклатуры.ВидЦены КАК ВидЦены
ИЗ
    РегистрСведений.ЦеныНоменклатуры КАК ЦеныНоменклатуры
ГДЕ
    ЦеныНоменклатуры.ВидЦены = &ВидЦены
    И ЦеныНоменклатуры.Валюта = &Валюта
 
где в параметрах устанавливаем наш Вид Цены и Валюту EUR.
 
Получаем список документов и корректируем их (устанавливаем рублевую цену для нашего типа цены).
После корректировки документов, дубль Типа Цены больше не выгружался в файл и выгрузка на сайт снова заработала в штатном режиме.
 
 
Узнать что такое макросы на мышку для кс го у нас на сайте.